apache正向代理本身不支持原生qps限频,需通过mod_limitipconn限制客户端ip并发连接数、iptables控制新建连接频次、白名单准入等方式实现有效约束,而非依赖http层计数。

Apache 正向代理本身不提供原生的“每秒请求数(QPS)”或“单位时间请求数”限频能力,它本质是转发客户端请求的通道,没有内置计数器、令牌桶或按 IP+Host 维度的请求速率统计机制。所以不能像 Nginx 的 limit_req 那样直接配置“每秒最多 5 次”。
但你可以通过组合模块,在正向代理链路的早期阶段,对发起代理请求的客户端 IP 实施有效约束,核心思路是:把“限制正向代理使用频率”转化为“限制谁可以连、能连多少、连多久”。
用 mod_limitipconn 控制并发连接数
这是最实用、最贴近需求的方式——防滥用、防多线程刷代理,比单纯数请求数更有效(尤其对抗慢速攻击)。
- 它限制的是每个客户端 IP 同时能建立的 TCP 连接数,不是 HTTP 请求频次,但正向代理的瓶颈往往就在连接层。
- 配置在
<proxy></proxy>块内,只作用于代理请求:
<ifmodule mod_limitipconn.c><proxy>
MaxConnectionsPerIP 3
NoIPLimit application/octet-stream
</proxy></ifmodule>
说明:
-
MaxConnectionsPerIP 3:同一 IP 最多维持 3 个活跃代理连接(如同时开 3 个浏览器标签走该代理会卡住第 4 个) -
NoIPLimit可跳过某些类型(如大文件下载),避免误伤正常用途
注意:需确认已加载
mod_limitipconn(Apache 2.4 默认不带,需编译或启用第三方模块)
用 mod_evasive 做粗粒度请求拦截(慎用)
mod_evasive 能统计单位时间内某个 IP 对代理路径的访问次数,但它无法区分“正向代理请求”和“普通网站请求”,容易误判。
PHP中文网提供Apache 2.4.62 官方 tar.gz 源码包下载,通过源码编译安装,开发者能够灵活定制模块、优化性能并精准控制安装路径,满足多样化的业务需求。
如果仍想用,建议仅用于高风险场景,并严格限定范围:
<ifmodule mod_evasive20.c>
DOSPageCount 10
DOSPageInterval 60
DOSSiteCount 100
DOSSiteInterval 60
DOSBlockingPeriod 300
# 只对代理入口路径生效(需配合 Rewrite 或 Location)
<location>
SetEnvIf Request_Method CONNECT evasive=1
SetEnvIf Request_URI "^http://" evasive=1
# 然后在 mod_evasive 中通过环境变量过滤
</location></ifmodule>
但实际中:
-
mod_evasive对CONNECT方法(HTTPS 代理)支持有限 - 它统计的是 Apache 接收到的请求,而正向代理流量可能绕过部分处理阶段
- 更适合防御简单 HTTP GET/POST 刷量,不适合精细控制
用 iptables / firewalld 做系统层连接限速(推荐辅助)
既然 Apache 层限频能力弱,不如在更底层加固:
# 限制每个 IP 每分钟新建 TCP 连接到 Apache 代理端口(如 8080)不超过 20 次 iptables -A INPUT -p tcp --dport 8080 -m state --state NEW -m limit --limit 20/minute --limit-burst 30 -j ACCEPT iptables -A INPUT -p tcp --dport 8080 -m state --state NEW -j DROP
优势:
- 不依赖 Apache 模块,生效快、开销低
- 直接作用于 SYN 包,防四层泛洪
- 与 Apache 配置解耦,运维更清晰
关键提醒:别混淆正向代理和反向代理的限流逻辑
- 正向代理的“客户端”是局域网内用户,你要限制的是他们的出口行为,不是外部网站;
- 所有基于
HTTP_HOST或REQUEST_URI的规则(如 mod_qos 的<if ...></if>)在正向代理中基本无效——因为 Host 头来自被访问的目标站,不是代理使用者; - 不要用
LimitRequestRate,它控制响应体发送速率(KB/s),对代理请求无意义。
真正管住正向代理滥用,靠的是:
✅ 控制并发连接数(mod_limitipconn)
✅ 控制新建连接频次(iptables)
✅ 严格白名单准入(Require ip / Require user)
❌ 不要强求 Apache 做 QPS 计数
不复杂但容易忽略。










