温馨提示×

debian apache如何限流访问

小樊
40
2026-10-06 11:25:40
栏目: 智能运维

在 Debian 上通过 Apache 实现访问限流,常见做法有以下几种,按“简单 → 精细”排列,你可以按需选择。


一、使用 Apache 自带模块(推荐,最简单)

1️⃣ mod_reqtimeout(限制请求速度)

防止慢速攻击、占连接。

sudo a2enmod reqtimeout
sudo systemctl restart apache2

配置文件(如 /etc/apache2/conf-enabled/security.conf):

RequestReadTimeout header=10-20,MinRate=500
RequestReadTimeout body=10,MinRate=500

含义:

  • 10 秒内至少 500 字节/秒
  • 否则断开

2️⃣ mod_evasive(防 CC / 暴刷,最常用)

强烈推荐用于限流

安装

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>

解释:

  • 1 秒内同一页面访问 ≥10 次 → 封 60 秒
  • 1 秒内全站访问 ≥50 次 → 封 60 秒

重启:

sudo systemctl restart apache2

3️⃣ mod_ratelimit(限制带宽)

适合限制下载速度

sudo a2enmod ratelimit

示例(限制为 100KB/s):

<Location /downloads>
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 100
</Location>

二、使用 mod_security(更专业,规则复杂)

适合 WAF 场景,不推荐新手。


三、系统层 / 网络层限流(Apache 之外)

1️⃣ iptables 限流(IP 级)

iptables -A INPUT -p tcp --dport 80 -m limit --limit 20/minute --limit-burst 5 -j ACCEPT

2️⃣ fail2ban(配合 Apache 日志)

sudo apt install fail2ban

用于封禁暴力访问 IP。


四、Nginx 反代 + Apache(高级方案)

如果你愿意加一层:

  • Nginx 做 limit_req
  • Apache 只处理动态请求

这是生产环境最常见方案。


五、常见组合建议 ✅

场景 推荐方案
防止刷接口 mod_evasive
防止慢速攻击 mod_reqtimeout
限制下载速度 mod_ratelimit
公网暴露 fail2ban + evasive

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

  • 是 API / 网站 / 下载
  • 想限制 IP / 接口 / 总流量
  • 当前 Debian + Apache 版本

我可以给你一份精准配置。

0 踩