Apache虚拟主机限制单IP并发需用mod_limitipconn模块,核心是控制同一IP同时TCP连接数而非请求速率;须启用mod_status与ExtendedStatus On,通过<IfModule>在<VirtualHost>内配置MaxConnPerIP及NoIPLimit规则,并确保DSO运行模式。

Apache 虚拟主机限制单 IP 并发,核心是用 mod_limitipconn 模块(非官方但广泛验证有效),它按真实 TCP 连接数控制,不依赖请求速率,对 Slowloris 类攻击防御直接有效。关键不是“每秒多少请求”,而是“同一 IP 同时能建几个连接”。
确认前提条件
该模块依赖 Apache 的状态统计功能:
- 确保已加载
mod_status模块(多数默认启用) - 在主配置或虚拟主机配置中设置
ExtendedStatus On - Apache 必须以 DSO(动态共享对象)方式运行,支持模块热加载
安装 mod_limitipconn 模块
下载编译安装(适配 Apache 2.4+):
- 获取源码:
wget http://dominia.org/djao/limit/mod_limitipconn-0.24.tar.bz2 - 解压并进入目录:
tar jxvf mod_limitipconn-0.24.tar.bz2 && cd mod_limitipconn-0.24 - 用 apxs 编译安装(路径需匹配你的 Apache):
/usr/local/apache2/bin/apxs -c -i -a mod_limitipconn.c - 成功后会自动写入
LoadModule limitipconn_module modules/mod_limitipconn.so到配置中
在虚拟主机内配置限连规则
把配置段直接写进 <VirtualHost> 块里,不依赖全局设置:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/var/www/html"
<pre class='brush:php;toolbar:false;'># 启用限连模块
<IfModule mod_limitipconn.c>
# 全局默认:每个 IP 最多 5 个并发连接
MaxConnPerIP 5
# 对下载目录更严格:只允许 1 个并发
<Location "/download">
MaxConnPerIP 1
</Location>
# 图片、CSS、JS 等静态资源不限制
NoIPLimit image/*
NoIPLimit text/css
NoIPLimit application/javascript
</IfModule></VirtualHost>
注意:MaxConnPerIP 在 <Location> 内设的值,必须 ≤ 全局值才生效;NoIPLimit 支持通配符匹配 MIME 类型或路径前缀。
验证与调试
重启 Apache 后快速验证是否生效:
- 临时把
MaxConnPerIP设为 2,在一台机器上用多个浏览器标签或 curl 并发访问同一页面 - 第 3 个请求应返回 HTTP 503(Service Unavailable)
- 查看错误日志:
tail -f /usr/local/apache2/logs/error_log,会记录类似[limitipconn] connection limit reached for 192.168.1.100 - 注意:代理用户会被识别为代理 IP,非真实客户端 IP;如需支持 X-Forwarded-For,需额外补丁或换用 mod_qos

















