在 CentOS 上使用 Apache 做限流,常见有几种方式,按“简单 → 专业”给你说明。
适合防止单 IP 占满连接。
vi /etc/httpd/conf/httpd.conf
常见参数:
# 最大并发连接
MaxClients 150
# 每个连接最大请求数
MaxRequestsPerChild 1000
# 请求超时
Timeout 60
重启:
systemctl restart httpd
⚠️ 这是“全局限流”,不区分 IP。
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
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
✅ 非常适合防爬虫、刷登录接口
mod_bwyum install mod_bw -y
配置:
<IfModule mod_bw.c>
BandWidthModule On
ForceBandWidthModule On
BandWidth all 500000 # 500KB/s
</IfModule>
重启 Apache。
适合 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 反代 |
如果你能告诉我:
我可以直接给你一份可直接用的配置。