在 Ubuntu 上通过 Apache 限制流量(带宽/速率),常见做法有以下几种,按“是否装模块”来区分:
mod_ratelimit(Apache 2.4+ 自带)适合限制每个连接的下载速度。
sudo a2enmod ratelimit
sudo systemctl restart apache2
编辑站点配置(如 /etc/apache2/sites-available/000-default.conf):
<VirtualHost *:80>
ServerName example.com
<Location /downloads>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 100
# 单位 KB/s,这里是 100KB/s
</Location>
</VirtualHost>
或全局限制:
<IfModule mod_ratelimit.c>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 200
</IfModule>
✅ 优点:简单、官方支持
❌ 缺点:只限下载,不限并发总数
mod_bw(第三方模块)适合更精细的流量控制(按 IP、按目录、按速度)。
Ubuntu 默认仓库可能没有:
sudo apt install libapache2-mod-bw
启用:
sudo a2enmod bw
sudo systemctl restart apache2
<VirtualHost *:80>
BandWidthModule On
ForceBandWidthModule On
BandWidth all 500000
# 500KB/s 总带宽
<Directory /var/www/html/downloads>
BandWidth all 100000
# 每个连接 100KB/s
</Directory>
</VirtualHost>
✅ 优点:功能强
❌ 缺点:老模块,需测试兼容性
适合整个服务器出口带宽限制。
sudo tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
⚠️ 需要网络知识,影响所有流量
如果可以换架构,Nginx 的 limit_rate 更简单:
location /downloads {
limit_rate 100k;
}
| 需求 | 方案 |
|---|---|
| 简单限速 | mod_ratelimit |
| 精细控制 | mod_bw |
| 系统级 | tc |
| 新项目 | Nginx |
如果你能说明:
我可以给你精确配置。