在 CentOS 上(注意:CentOS 默认是 Apache HTTP Server,包名通常是 httpd,而不是 apache2,apache2 是 Debian/Ubuntu 的叫法),限制流量(带宽)常见有几种方式:
mod_ratelimit(推荐,最简单)httpd -M | grep ratelimit
如果没有,需要安装(通常已内置):
yum install mod_ratelimit
编辑 Apache 配置:
vi /etc/httpd/conf/httpd.conf
或新建:
vi /etc/httpd/conf.d/ratelimit.conf
示例(限制为 100 KB/s):
<IfModule mod_ratelimit.c>
<Location />
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 100
</Location>
</IfModule>
参数说明:
rate-limit 100 → 每秒 100 KBsystemctl restart httpd
✅ 优点:简单、原生支持
❌ 缺点:只能限制响应速度,不是精确流量计费
mod_bandwidth(第三方模块,较老)⚠️ CentOS 官方源通常不带,需要手动编译,不推荐新项目使用。
iptables / tc 限制服务器总带宽(系统级)适合限制整个服务器或某个 IP:
tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms
或结合 iptables + hashlimit:
iptables -A INPUT -p tcp --dport 80 -m hashlimit \
--hashlimit-above 100k/sec --hashlimit-mode srcip \
--hashlimit-name http -j DROP
✅ 优点:精确、系统级
❌ 缺点:配置复杂
如果可以前端加 Nginx:
limit_rate 100k;
| 场景 | 推荐方式 |
|---|---|
| Apache 单独限流 | mod_ratelimit |
| 整个服务器限流 | tc / iptables |
| 高并发生产 | Nginx + Apache |
如果你能告诉我:
我可以给你更精确的配置。