在 CentOS 上限制 Apache 的流量(带宽),常见做法有以下几种,按“是否装模块 / 是否简单”从易到难说明。
mod_ratelimit(推荐,Apache 自带)适用场景:限制每个连接的下载速度(如 100KB/s)
httpd -M | grep ratelimit
如果有 ratelimit_module,说明已支持。
如没有,CentOS 一般自带,无需安装。
编辑 Apache 配置(如 /etc/httpd/conf/httpd.conf 或 /etc/httpd/conf.d/limit.conf):
<IfModule mod_ratelimit.c>
<Location /download>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 100
</Location>
</IfModule>
说明:
rate-limit 100 = 100 KB/s/download 路径生效<VirtualHost *:80>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 200
</VirtualHost>
systemctl restart httpd
✅ 优点:简单、官方支持
❌ 缺点:不能限制总流量,只能限速
mod_bw(第三方模块,功能更强)适用场景:按 IP、按目录、限制总带宽
CentOS 默认没有,需要 EPEL:
yum install epel-release -y
yum install mod_bw -y
<IfModule mod_bw.c>
BandWidthModule On
ForceBandWidthModule On
BandWidth all 500000
MinBandWidth all -1
MaxBandWidth all 1000000
</IfModule>
含义:
500000 = 500 KB/ssystemctl restart httpd
✅ 功能强
❌ 非官方模块,维护较少
tc / iptables(系统层,不推荐给 Apache)适合整台服务器或 IP 限速,不是 Apache 专属。
例如限制某 IP:
iptables -A OUTPUT -p tcp --dport 80 -d 1.2.3.4 -m limit --limit 100/s -j ACCEPT
❌ 复杂、影响全局
如果你用 Nginx 反代 Apache:
limit_rate 100k;
非常优雅。
| 需求 | 方案 |
|---|---|
| 简单限速 | mod_ratelimit |
| 精细控制 | mod_bw |
| 整机/IP | iptables |
| 新架构 | Nginx |
如果你愿意,可以告诉我:
我可以直接给你一份可用配置。