在 CentOS 上通过 Apache 实现限速,常见有几种方式,下面按最常用 → 进阶给你说明。
CentOS 默认 Apache(httpd)一般已带 mod_ratelimit
httpd -M | grep ratelimit
如果没有,启用:
sudo yum install mod_ratelimit
sudo systemctl restart httpd
编辑 Apache 配置:
sudo vi /etc/httpd/conf/httpd.conf
添加:
<IfModule mod_ratelimit.c>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 500
</IfModule>
单位:KB/s
上面表示限速 500KB/s
<Directory "/var/www/html/download">
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 200
</Directory>
→ 仅 /download 目录限速 200KB/s
<VirtualHost *:80>
ServerName example.com
DocumentRoot /var/www/example
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 300
</VirtualHost>
sudo systemctl restart httpd
CentOS 默认仓库没有,需要 EPEL 或手动编译。
sudo yum install epel-release
sudo yum install mod_bw
<IfModule mod_bw.c>
BandWidthModule On
ForceBandWidthModule On
BandWidth all 102400
</IfModule>
102400 = 100KB/s
可按 IP、文件类型限速,适合下载站。
适合整个服务器出口限速,不区分 URL:
tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
| 场景 | 推荐方式 |
|---|---|
| 简单限速 | mod_ratelimit |
| 下载站 / 复杂规则 | mod_bw |
| 整个服务器 | tc / 防火墙 |
如果你愿意,可以告诉我:
httpd -v)我可以帮你写精确配置。