apache本身不内置故障转移机制,其单节点防护依赖mod_evasive(限请求频次)和mod_qos(限并发连接),配合remoteip识别真实ip,并可通过fail2ban联动防火墙实现增强防护。
apache 本身不内置“故障转移”机制,所谓故障转移(failover)通常由前端负载均衡器(如 haproxy、nginx、f5)或集群调度层实现。你在 apache 上能做的,是针对**单个后端节点**配置访问控制,防止恶意 ip 刷请求导致该节点过载甚至被拖垮——这属于“防止单点失效”的关键一环,而非 apache 自身做 failover。
明确目标:不是让 Apache 切换服务,而是让它拒绝恶意流量
当某台 Apache 服务器作为集群中的一员运行时,若某个 IP 持续高频刷新(如秒刷几十次登录页、搜索接口),它会快速耗尽线程、连接或 CPU。此时即使上游有故障转移,也会因频繁触发切换而降低整体可用性。因此,限制单 IP 行为本质是保护本机资源,维持其稳定在线。
用 mod_evasive 实现轻量级单 IP 刷新拦截
这是最常用、低开销的方案,适合防御自动化脚本、扫描器、简单 CC 攻击:
- 启用模块:
a2enmod evasive(Debian/Ubuntu)或手动加载LoadModule evasive20_module modules/mod_evasive20.so - 核心配置示例(放在
httpd.conf或虚拟主机内):
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 600
DOSLogDir "/var/log/apache2/evasive"
→ 表示:同一页面 1 秒内超 2 次即封;全站 1 秒内超 50 次即封;封禁时长 10 分钟 - 注意:该模块基于请求头解析,不处理 Keep-Alive 空闲连接,对慢速攻击防护有限,但对普通恶意刷新足够有效
用 mod_qos 实现更精准的并发连接限制
如果你发现攻击者用大量长连接(如 Slowloris)占满 Apache 的 MPM 工作进程,mod_qos 是更底层的解决方案:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 编译安装后加载:
LoadModule qos_module modules/mod_qos.so - 关键配置(限制单 IP 最多 5 个活跃连接):
QS_SrvMaxConnPerIP 5
QS_SrvMaxConn 200
→ 它统计的是 TCP ESTABLISHED/KEEPALIVE 连接数,不是 HTTP 请求计数,真正防住连接耗尽 - 支持 CIDR 网段限流,例如:
QS_SrvMaxConnPerIP 3 "192.168.10.0/24",适合内网管理段精细化管控
配合真实 IP 识别(尤其在反向代理后)
如果 Apache 前面有 Nginx、CDN 或云 WAF,REMOTE_ADDR 会变成代理 IP。必须透传并信任真实客户端 IP,否则限流对象错位:
- 确保前端代理设置
X-Forwarded-For头(如 Nginx 中加proxy_set_header X-Forwarded-For $remote_addr;) - 在 Apache 中启用
RemoteIPInternalProxy并配置可信代理网段:
RemoteIPHeader X-Forwarded-For
RemoteIPInternalProxy 10.0.0.0/8
RemoteIPInternalProxy 172.16.0.0/12
RemoteIPInternalProxy 192.168.0.0/16 - 之后
mod_evasive和mod_qos才能基于真实 IP 生效
补充建议:日志监控 + fail2ban 联动
单纯 Apache 内部限流是第一道防线,建议叠加外部防护提升鲁棒性:
- 在 Apache 日志中记录被拦截 IP(
mod_evasive默认写入DOSLogDir) - 用
fail2ban监控该日志文件,自动将高频恶意 IP 加入系统级防火墙(iptables/ufw),彻底阻断所有端口访问 - 示例 jail 配置片段:
[evasive]
enabled = true
filter = apache-evasive
logpath = /var/log/apache2/evasive/*
bantime = 3600
maxretry = 1










