在 CentOS 上限制 Apache 的带宽,常见做法有几种,下面按常用程度给你说明。
mod_bandwidth(推荐,简单直接)CentOS 默认 Apache 一般不带 mod_bandwidth,需要安装:
yum install mod_bandwidth
(如果是 CentOS 8 / Stream,用 dnf)
编辑 Apache 配置(如 /etc/httpd/conf.d/bandwidth.conf):
<IfModule mod_bandwidth.c>
BandwidthModule On
ForceBandWidthModule On
<Directory "/var/www/html">
Bandwidth all 102400 # 限制为 100KB/s(单位:字节/秒)
MaxConnection all 50
</Directory>
</IfModule>
说明:
102400 = 100KB/ssystemctl restart httpd
mod_ratelimit(Apache 2.4 自带)如果你的 Apache 是 2.4+(CentOS 7+ 基本都是):
httpd -M | grep ratelimit
如果没有,编辑:
vi /etc/httpd/conf.modules.d/00-base.conf
确保有:
LoadModule ratelimit_module modules/mod_ratelimit.so
<Directory "/var/www/html">
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 100 # 100 KB/s
</Directory>
或针对某个位置:
<Location /download>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 200
</Location>
systemctl restart httpd
tc / iptables(系统级,不推荐用于 Apache)适合整台服务器限速,而不是 Apache:
tc(流量控制)wondershaper示例(不针对 Apache 单独讲,复杂)
| 方法 | 难度 | 精确度 | 推荐度 |
|---|---|---|---|
| mod_ratelimit | 低 | 中 | ⭐⭐⭐⭐ |
| mod_bandwidth | 中 | 高 | ⭐⭐⭐⭐ |
| tc/iptables | 高 | 低 | ⭐⭐ |
mod_bandwidth: 字节/秒mod_ratelimit: KB/秒如果你愿意,可以告诉我:
我可以直接给你一份可用的配置。