温馨提示×

ubuntu apache2如何限速

小樊
63
2026-07-17 19:31:23
栏目: 智能运维

在 Ubuntu + Apache2 下限速,常见做法有几种。下面按 推荐程度 和 使用场景 给你说明,并附上配置示例。


✅ 方法一:使用 mod_ratelimit(Apache 自带,最推荐)

适用场景

  • 限制 单个连接的下载速度
  • 不想装第三方模块
  • 简单、稳定

1️⃣ 启用模块

sudo a2enmod ratelimit
sudo systemctl restart apache2

2️⃣ 配置限速

可以在 虚拟主机 或 .htaccess 中配置。

限制为 100KB/s

<Location /downloads>
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 100
</Location>

单位:KB/s

限制整个站点

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html

    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 200
</VirtualHost>

✅ 优点:简单
❌ 缺点:无法限制并发连接数


✅ 方法二:使用 mod_qos(功能强大,推荐进阶)

适用场景

  • 想限制 并发连接数
  • 想限制 请求频率
  • 防止单 IP 占满带宽

1️⃣ 安装

sudo apt install libapache2-mod-qos
sudo a2enmod qos
sudo systemctl restart apache2

2️⃣ 示例配置

<IfModule mod_qos.c>
    # 最大并发连接数
    QSMaxClients 200

    # 单 IP 最大并发
    QSClientMaxConnections 5

    # 限制请求频率(每秒)
    QSConnPerIPLimit 10
</IfModule>

✅ 优点:功能全面
❌ 缺点:配置稍复杂


✅ 方法三:使用 mod_bw(第三方,老但好用)

适用场景

  • 精细控制 带宽 + IP
  • 老项目常见

1️⃣ 安装

sudo apt install libapache2-mod-bw
sudo a2enmod bw
sudo systemctl restart apache2

2️⃣ 配置示例

<VirtualHost *:80>
    BandWidthModule On
    ForceBandWidthModule On

    BandWidth all 102400   # 100KB/s
</VirtualHost>

✅ 优点:支持按 IP、目录限速
❌ 缺点:模块较老,维护不活跃


✅ 方法四:系统层限速(不推荐但可用)

使用 tc(Linux 流量控制)

适合 整台服务器,不适合 Apache 精细控制。

tc class add dev eth0 parent 1: classid 1:1 htb rate 1mbit

❌ 不在 Apache 层
❌ 配置复杂
✅ 可用于应急


✅ 推荐使用方案总结

需求 推荐方案
简单限速 mod_ratelimit
防刷 / 防并发 mod_qos
老系统 mod_bw
整机限速 tc

✅ 常用组合(实战推荐)

# 限速 200KB/s + 单 IP 最多 5 连接
<Location /downloads>
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 200
</Location>

QSClientMaxConnections 5

如果你愿意,可以告诉我:

  • 是 下载限速 还是 访问频率限制
  • 是否针对 单个 IP
  • Apache 版本(apache2 -v)

我可以帮你写一份 可直接用的完整配置。

0 踩