在 Debian 上用 Apache 做限流,常见有几种方式,从简单到专业依次是:
mod_reqtimeout(防止慢速请求耗尽连接)适合:防止慢连接攻击
sudo a2enmod reqtimeout
编辑配置(如 /etc/apache2/conf-enabled/reqtimeout.conf):
RequestReadTimeout header=10-30,MinRate=500
RequestReadTimeout body=30,MinRate=500
重启:
sudo systemctl restart apache2
mod_evasive(最常用,防CC/刷接口)适合:限制单个 IP 的请求频率
sudo apt install libapache2-mod-evasive
sudo a2enmod evasive
编辑 /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
mod_ratelimit(限制带宽)适合:限制下载/视频/接口带宽
sudo a2enmod ratelimit
示例(限制为 100KB/s):
<Location /download>
SetOutputFilter RATE_LIMIT
SetEnv rate-limit 100
</Location>
重启 Apache 即可。
mod_security(高级限流 + WAF)适合:生产环境、复杂规则
sudo apt install libapache2-mod-security2
sudo a2enmod security2
可配合 OWASP CRS 规则做限流。
如果你可以前面加 Nginx:
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
location / {
limit_req zone=one burst=20 nodelay;
}
mod_evasivemod_ratelimit如果你愿意,可以告诉我:
我可以给你一份可直接用的配置。