温馨提示×

centos apache怎么限制流量

小樊
46
2026-09-15 02:00:55
栏目: 智能运维

在 CentOS 上通过 Apache 限制流量(带宽/速率),常见做法有下面几种,按「是否改Apache、是否简单」给你总结。


一、使用 Apache 模块(最常用)

1️⃣ mod_ratelimit(Apache 2.4 自带,推荐)

适用: 限制每个连接的下载速度
不支持: 按 IP 总流量限制

安装(CentOS 7/8)

# 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

2️⃣ mod_bw(第三方,功能更强)

支持:

  • 按 IP
  • 按文件类型
  • 总带宽限制

安装

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 限制

二、用 iptables / firewalld 限制(系统级)

适合:

  • 限制某个 IP
  • 限制整个服务器出口流量

firewalld 示例

firewall-cmd --add-rich-rule='rule family=ipv4 source address=192.168.1.100 limit value="1m"' --permanent
firewall-cmd --reload

(更偏向连接频率,不是精确带宽)


三、用 tc(Linux 流量控制,最精确)

适合:

  • 服务器整体限速
  • 高要求生产环境

示例(限制 eth0 为 10Mbps):

tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms

四、推荐方案总结

需求 推荐方式
简单限速下载 ✅ mod_ratelimit
按 IP / 类型限速 mod_bw
系统级严格限速 tc
防刷 / 限连接 firewalld + fail2ban

如果你能告诉我:

  • CentOS 版本
  • Apache 版本
  • 是想限制下载速度还是防流量攻击

我可以直接帮你写一份完整配置。

0