温馨提示×

debian apache怎么限流

小樊
37
2026-09-27 16:52:18
栏目: 智能运维

在 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 的请求频率

1. 安装

sudo apt install libapache2-mod-evasive

2. 启用模块

sudo a2enmod evasive

3. 配置(示例)

编辑 /etc/apache2/mods-enabled/evasive.conf:

<IfModule mod_evasive20.c>
    DOSHashTableSize 3097
    DOSPageCount 10
    DOSSiteCount 50
    DOSPageInterval 1
    DOSSiteInterval 1
    DOSBlockingPeriod 60
</IfModule>

含义:

  • 1 秒内同一页面请求 >10 次 → 拉黑 60 秒
  • 1 秒内全站请求 >50 次 → 拉黑

4. 重启

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(更推荐)

如果你可以前面加 Nginx:

limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

location / {
    limit_req zone=one burst=20 nodelay;
}

推荐组合

  • 普通网站:mod_evasive
  • 下载站:mod_ratelimit
  • 高并发/API:Nginx 限流 + Apache

如果你愿意,可以告诉我:

  • 是 网站 / API / 下载?
  • 想限制 IP 数 / 请求频率 / 带宽?

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

0 踩