Apache需通过mod_limitipconn模块实现单IP并发限制,核心步骤包括启用ExtendedStatus、加载模块、配置MaxConnPerIP阈值,并用NoIPLimit放行静态资源,最后经configtest验证后重启服务。
apache 本身不支持原生按 ip 限并发,必须通过 mod_limitipconn 模块实现。该模块轻量、稳定,专为单 ip 并发连接控制设计,配置集中在 httpd.conf 中,核心是启用状态统计、加载模块、设置连接上限并合理放行静态资源。
启用必要前提:ExtendedStatus 和模块加载
该模块依赖 Apache 的连接状态数据,所以必须开启 ExtendedStatus,否则无法获取实时活跃连接数:
- 确保
mod_status已加载(通常默认启用) - 在
httpd.conf中确认或添加:ExtendedStatus On - 加载模块(路径按实际调整,常见位置为
modules/mod_limitipconn.so):LoadModule limitipconn_module modules/mod_limitipconn.so
设置全局或目录级并发上限
使用 <Location> 或 <LocationMatch> 定义作用范围,MaxConnPerIP 指定每个 IP 最多几个并发连接:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 限制整个网站根目录(每个 IP 最多 5 个并发):
<IfModule mod_limitipconn.c><br> <Location /><br> MaxConnPerIP 5<br> </Location><br></IfModule>
- 单独限制下载目录(如
/download)为 1 并发:<Location /download><br> MaxConnPerIP 1<br></Location>
- 用正则匹配特定脚本(如只限
/api/v1/下的 PHP 接口):<LocationMatch "^/api/v1/.*\.php$"><br> MaxConnPerIP 3<br></LocationMatch>
避免误伤:对静态资源放行
图片、CSS、JS 等静态文件常被浏览器并行加载,若不限制放行,会导致页面白屏或加载缓慢:
- 在
<IfModule mod_limitipconn.c>内添加放行规则:NoIPLimit image/*<br>NoIPLimit *.css<br>NoIPLimit *.js<br>NoIPLimit text/html
- 注意:放行规则写在
MaxConnPerIP上方或同级均可,模块按顺序匹配,先匹配到的规则优先生效
验证与重启前检查
配置完成后不能直接重启,需严格验证:
- 运行语法检查命令:
apachectl configtest或httpd -t,输出Syntax OK才安全 - 重启服务:
CentOS/RHEL:systemctl restart httpd
Debian/Ubuntu:systemctl restart apache2 - 测试方法:用同一 IP 多开浏览器标签页,或使用
wget -qO- URL &启动多个并发请求,超过阈值应返回503 Service Unavailable

















