在 CentOS 上通过 Apache 限制流量(带宽/速率),常见做法有下面几种,按「是否改Apache、是否简单」给你总结。
适用: 限制每个连接的下载速度
不支持: 按 IP 总流量限制
# CentOS 7
yum install mod_ratelimit
# CentOS 8 / Stream
dnf install mod_ratelimit
编辑配置文件:
vi /etc/httpd/conf.d/ratelimit.conf
内容:
<IfModule mod_ratelimit.c>
<Location /download>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 100
</Location>
</IfModule>
说明:
rate-limit 100 = 100 KB/s/download 路径生效全局限制:
<IfModule mod_ratelimit.c>
SetOutputFilter RRate_LIMIT
SetEnv rate-limit 200
</IfModule>
重启 Apache:
systemctl restart httpd
支持:
CentOS 默认源没有,需要 EPEL 或手动编译:
yum install epel-release
yum install mod_bw
(如果找不到,需要编译)
<IfModule mod_bw.c>
BandWidthModule On
ForceBandWidthModule On
BandWidth all 500000
MinBandWidth all 10000
</IfModule>
说明:
500000 = 500 KB/s 总带宽from 192.168.1.0/24 限制适合:
firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.1.100 limit value="1m"' --permanent
firewall-cmd --reload
(更偏向连接频率,不是精确带宽)
适合:
示例(限制 eth0 为 10Mbps):
tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms
| 需求 | 推荐方式 |
|---|---|
| 简单限速下载 | ✅ mod_ratelimit |
| 按 IP / 类型限速 | mod_bw |
| 系统级严格限速 | tc |
| 防刷 / 限连接 | firewalld + fail2ban |
如果你能告诉我:
我可以直接帮你写一份完整配置。