配置块不支持直接限制并发连接数,必须借助 mod_limitipconn 或 mod_qos 等模块,在 或 中实现路径级并发控制,且需注意 匹配 url 路径而非文件系统路径。

<directory></directory> 配置块本身不支持直接限制并发连接数。Apache 的 <directory></directory> 指令用于控制路径级访问权限、脚本执行、目录列表等行为,它不处理连接层面的资源控制(如 TCP 连接数、请求并发量)。想在某个目录下限制并发,必须借助其他模块,在更底层或更高层实现。
真正可行的方式是:把并发限制逻辑放在 <directory></directory> 外围的上下文中——比如 <virtualhost></virtualhost> 或 <location></location>,并配合专用模块。
✅ 正确做法:用 mod_limitipconn 在 <location></location> 中限制目录级并发
这是最常用、最贴近“Directory 并发限制”需求的方案:
-
mod_limitipconn控制的是每个客户端 IP 在指定路径下的并发 TCP 连接数; - 它通过
<location></location>(不是<directory></directory>)生效,但语义上可精准对应到某个 URL 路径(如/api、/download),效果等同于“限制该目录的并发”。
配置示例:
LoadModule limitipconn_module modules/mod_limitipconn.so
ExtendedStatus On
<virtualhost>
ServerName example.com
DocumentRoot /var/www/example.com
<location>
MaxConnPerIP 5
# 超过5个并发连接时返回 503
</location><location>
MaxConnPerIP 2
NoIPLimit application/pdf # PDF 文件不限 IP 并发
OnlyIPLimit application/zip # ZIP 文件才启用限制
</location></virtualhost>
⚠️ 注意:
<location></location>匹配的是URL 路径(如/api/login),不是文件系统路径;而<directory></directory>匹配的是磁盘路径(如/var/www/example.com/api)。两者不能混用,但<location></location>更适合做接入层限流。
Apache Superset Dashboard and SQL Exploration Skill下载Apache Superset 是一个广泛采用的开源 BI 平台,用于 SQL 探索、图表构建和仪表板交付。当代理需要查询仓库数据、组装仪表板或使用成熟的分析界面解释指标而不是临时笔记本代码时,此技能非常有用。
✅ 替代方案:用 mod_qos 对关键路径做连接+请求双控
如果需更强控制(比如同时限制单 IP 连接数 + 每秒请求数),推荐 mod_qos:
LoadModule qos_module modules/mod_qos.so
<virtualhost>
ServerName example.com
<location>
QS_SrvMaxConnPerIP 3 # 单 IP 最多 3 个活跃连接
QS_LimitRate 100 # 可选:限速 100 KB/s
QS_SrvMaxReqPerSec 5 # 每秒最多 5 个新请求(含 POST/GET)
</location></virtualhost>
它比 mod_limitipconn 更精细,支持连接态统计(ESTABLISHED/KEEPALIVE),防 Slowloris 类攻击更有效。
❌ 常见误区:别在 <directory></directory> 里写 MaxConnectionsPerIP 或 MaxVhostClients
-
MaxConnectionsPerIP是mod_limitipconn的指令,只在<location></location>或<virtualhost></virtualhost>内有效,放入<directory></directory>会报错或被忽略; -
MaxVhostClients属于mod_vhost_limit,只能在<virtualhost></virtualhost>中设置,作用于整个虚拟主机,无法细化到子目录; -
<directory></directory>中允许的指令如Require、Options、AllowOverride等,均无并发控制能力。
? 补充建议:配合内核参数加固底层
即使配置了模块限流,也建议同步调优系统参数,防止 TCP 半连接绕过:
# 临时生效 echo 3 > /proc/sys/net/ipv4/tcp_synack_retries echo 1 > /proc/sys/net/ipv4/tcp_syncookies # 永久写入 /etc/sysctl.conf net.ipv4.tcp_synack_retries = 3 net.ipv4.tcp_syncookies = 1
这样能增强对 SYN Flood 和慢速连接攻击的防御力。
不复杂但容易忽略










