温馨提示×

centos apache怎么限流量

小樊
48
2026-09-27 03:12:53
栏目: 智能运维

在 CentOS 上限制 Apache 的流量(带宽),常见做法有以下几种,按“是否装模块 / 是否简单”从易到难说明。


一、使用 mod_ratelimit(推荐,Apache 自带)

适用场景:限制每个连接的下载速度(如 100KB/s)

1. 确认模块已启用

httpd -M | grep ratelimit

如果有 ratelimit_module,说明已支持。

如没有,CentOS 一般自带,无需安装。

2. 配置限流

编辑 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>

3. 重启 Apache

systemctl restart httpd

✅ 优点:简单、官方支持
❌ 缺点:不能限制总流量,只能限速


二、使用 mod_bw(第三方模块,功能更强)

适用场景:按 IP、按目录、限制总带宽

1. 安装模块

CentOS 默认没有,需要 EPEL:

yum install epel-release -y
yum install mod_bw -y

2. 配置示例

<IfModule mod_bw.c>
    BandWidthModule On
    ForceBandWidthModule On
    BandWidth all 500000
    MinBandWidth all -1
    MaxBandWidth all 1000000
</IfModule>

含义:

  • 500000 = 500 KB/s
  • 可针对 IP、目录、文件类型限制

3. 重启

systemctl 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 反代限流(如果你愿意换架构)

如果你用 Nginx 反代 Apache:

limit_rate 100k;

非常优雅。


推荐总结

需求 方案
简单限速 mod_ratelimit
精细控制 mod_bw
整机/IP iptables
新架构 Nginx

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • Apache 版本
  • 想限制「下载速度」还是「总流量」
  • 针对整个站还是某个目录

我可以直接给你一份可用配置。

0 踩