在 CentOS 上,如果你说的是 Apache(httpd) 的限流(不是 Ubuntu 的 apache2 包名,CentOS 叫 httpd),常见做法有几种,下面从最常用到进阶给你讲。
httpd -M | grep ratelimit
应该有:
ratelimit_module (shared)
如果没有:
yum install mod_ratelimit
(CentOS 7/8 通常已包含)
编辑配置文件(如 /etc/httpd/conf.d/ratelimit.conf):
<IfModule mod_ratelimit.c>
<Location />
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 100
</Location>
</IfModule>
说明:
rate-limit 100 → 每秒 100 KB重启:
systemctl restart httpd
防止慢速攻击:
<IfModule reqtimeout_module>
RequestReadTimeout header=10-20,MinRate=500
RequestReadTimeout body=10-20,MinRate=500
</IfModule>
含义:
yum install mod_evasive
配置 /etc/httpd/conf.d/mod_evasive.conf:
DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 60
含义:
yum install mod_qos
示例(限制并发):
QS_LocRequestLimitMatch * 50
QS_EventLimitRequest 100
如果你用 Nginx + Apache:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location / {
limit_req zone=one burst=20 nodelay;
proxy_pass http://127.0.0.1:8080;
}
}
iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/s -j ACCEPT
| 需求 | 推荐 |
|---|---|
| 下载限速 | mod_ratelimit |
| 防慢速攻击 | mod_reqtimeout |
| 防 CC / 刷接口 | mod_evasive |
| 高并发控制 | mod_qos |
| 整体入口限流 | Nginx |
如果你能说清楚:
我可以给你一份直接可用的配置。