在 Debian 上通过 Apache 实现访问限流,常见做法有以下几种,按“简单 → 精细”排列,你可以按需选择。
防止慢速攻击、占连接。
sudo a2enmod reqtimeout
sudo systemctl restart apache2
配置文件(如 /etc/apache2/conf-enabled/security.conf):
RequestReadTimeout header=10-20,MinRate=500
RequestReadTimeout body=10,MinRate=500
含义:
强烈推荐用于限流
sudo apt update
sudo apt install libapache2-mod-evasive
sudo a2enmod evasive
编辑:
sudo nano /etc/apache2/mods-enabled/evasive.conf
示例:
<IfModule mod_evasive20.c>
DOSHashTableSize 3097
DOSPageCount 10
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 60
</IfModule>
解释:
重启:
sudo systemctl restart apache2
适合限制下载速度
sudo a2enmod ratelimit
示例(限制为 100KB/s):
<Location /downloads>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 100
</Location>
适合 WAF 场景,不推荐新手。
iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 5 -j ACCEPT
sudo apt install fail2ban
用于封禁暴力访问 IP。
如果你愿意加一层:
limit_req这是生产环境最常见方案。
| 场景 | 推荐方案 |
|---|---|
| 防止刷接口 | mod_evasive |
| 防止慢速攻击 | mod_reqtimeout |
| 限制下载速度 | mod_ratelimit |
| 公网暴露 | fail2ban + evasive |
如果你愿意,可以告诉我:
我可以给你一份精准配置。