Apache 本身不内置单 IP 并发连接数限制功能,需通过第三方模块 mod_limitipconn 实现;该模块轻量稳定,用于限制每个客户端 IP 的 ESTABLISHED 状态并发 TCP 连接数,依赖 ExtendedStatus 和 mod_status,支持 MIME 类型豁免,但不支持 CIDR 网段限流。

Apache 本身不内置单 IP 并发连接数限制功能,需通过第三方模块实现。最常用、轻量且稳定的是 mod_limitipconn,它专用于控制每个客户端 IP 在 ESTABLISHED 状态下的并发 TCP 连接数(即同时打开的 HTTP 连接),适合防刷、限流、保护后端资源。
安装 mod_limitipconn 模块
该模块非 Apache 官方自带,需手动编译或包管理安装:
- CentOS/RHEL:运行
yum install mod_limitipconn(若仓库可用)或使用apxs编译源码 - Ubuntu/Debian:执行
apt-get install libapache-mod-limitipconn - 通用编译方式:
下载源码 → 解压 → 进入目录 → 执行:/usr/bin/apxs -c -i mod_limitipconn.c
成功后会自动将mod_limitipconn.so写入 modules 目录,并在配置中加载
启用必要前提:ExtendedStatus 必须开启
mod_limitipconn 依赖 Apache 的连接状态统计,因此必须启用 ExtendedStatus:
Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
- 编辑
httpd.conf或apache2.conf - 确认存在且未被注释:
ExtendedStatus On - 同时确保
mod_status已加载(通常默认启用)
配置 MaxConnPerIP 实现单 IP 限流
在主配置、虚拟主机或目录级位置添加规则。示例为全局限制(根路径):
<IfModule mod_limitipconn.c>
<Location />
MaxConnPerIP 5
NoIPLimit image/*
NoIPLimit text/css
NoIPLimit application/x-javascript
</Location>
</IfModule>-
MaxConnPerIP 5:每个 IP 最多维持 5 个并发连接 -
NoIPLimit:对指定 MIME 类型(如图片、CSS、JS)不计数,避免静态资源触发限制 - 若放在
<VirtualHost>内,则只对该站点生效;放在<Location /api>中,则仅限制 API 路径 - 注意:子路径中的
MaxConnPerIP值不能大于上级作用域设定值,否则无效
验证与注意事项
重启 Apache 后即可生效:
- 测试方法:用同一台机器开多个浏览器标签或 curl 并发请求,第 6 个及以上请求会返回
503 Service Unavailable - 该模块只统计处于
ESTABLISHED状态的连接,不干预连接建立过程或超时行为 - 经代理访问时,所有用户可能共用代理出口 IP,导致误限;如需识别真实客户端,应配合
RemoteIpValve(Tomcat)或X-Forwarded-For头+前端透传 - 不支持 CIDR 网段写法(如 192.168.1.0/24),如需按网段限流,请改用
mod_qos

















