温馨提示×

apache centos怎么限流

小樊
45
2026-10-03 00:17:19
栏目: 智能运维

在 CentOS 上使用 Apache 做限流,常见有几种方式,按“简单 → 专业”给你说明。


一、使用 Apache 自带模块(最简单)

1️⃣ 限制并发连接数(mod_reqtimeout / max clients)

适合防止单 IP 占满连接。

修改 Apache 配置

vi /etc/httpd/conf/httpd.conf

常见参数:

# 最大并发连接
MaxClients 150

# 每个连接最大请求数
MaxRequestsPerChild 1000

# 请求超时
Timeout 60

重启:

systemctl restart httpd

⚠️ 这是“全局限流”,不区分 IP。


二、按 IP 限流(最常用 ✅)

2️⃣ 使用 mod_qos(推荐)

安装

CentOS 默认源可能没有,先启用 EPEL:

yum install epel-release -y
yum install mod_qos -y

配置限流

vi /etc/httpd/conf.d/qos.conf

示例(每个 IP 最多 10 个并发):

<IfModule mod_qos.c>
    QS_LocRequestLimitMatch .* 10
    QS_EventLimitCount 100
</IfModule>

重启:

systemctl restart httpd

三、限制请求速率(类似 Nginx limit_req)

3️⃣ 使用 mod_evasive(防 CC / 刷接口)

安装

yum install mod_evasive -y

配置

vi /etc/httpd/conf.d/mod_evasive.conf

示例:

DOSHashTableSize 3097
DOSPageCount 10        # 同一页面 10 次
DOSSiteCount 50        # 同一站点 50 次
DOSPageInterval 1      # 1 秒
DOSSiteInterval 1
DOSBlockingPeriod 60   # 封禁 60 秒

重启:

systemctl restart httpd

✅ 非常适合防爬虫、刷登录接口


四、带宽限速(限制下载速度)

4️⃣ 使用 mod_bw

yum install mod_bw -y

配置:

<IfModule mod_bw.c>
    BandWidthModule On
    ForceBandWidthModule On
    BandWidth all 500000   # 500KB/s
</IfModule>

重启 Apache。


五、结合 iptables / firewalld(系统级)

适合 DDoS 初级防护:

# 限制单个 IP 每秒 20 个新连接
iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/s -j ACCEPT

六、推荐组合方案 ✅

场景 方案
普通网站 mod_evasive
API 接口 mod_qos
下载站 mod_bw
高并发 Apache + Nginx 反代

如果你能告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • Apache 版本
  • 想限 IP / 接口 / 带宽 / 并发

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

0 踩