max_conns参数需满足Nginx≥1.11.5、least_conn或ip_hash策略、至少两台server才生效;须配合keepalive、HTTP/1.1长连接及queue排队机制,并按后端连接上限80%~90%合理设定。

直接在 upstream 块的 server 行中添加 max_conns=数值 即可,但必须满足版本、负载策略、连接复用等前提条件,否则该参数不生效。
max_conns 的生效前提
这个参数不是写上就起作用的,需同时满足以下三点:
- Nginx 版本 ≥ 1.11.5(开源版已支持,无需商业许可)
- upstream 使用 least_conn 或 ip_hash 负载均衡策略(
round_robin默认策略完全忽略该参数) - upstream 中至少配置了两台 server(单节点时 max_conns 不触发限流逻辑)
正确配置写法与关键配套
仅写 max_conns 不够,必须搭配长连接机制才能真实限制并发连接数:
- 在 upstream 块内启用连接池:
keepalive 64;(建议设为后端连接池上限的 1/2~1/3) - 在 location 中启用 HTTP/1.1 长连接:
proxy_http_version 1.1;和proxy_set_header Connection ''; - 选用支持策略,例如:
upstream backend { least_conn; server 10.0.1.10:8080 max_conns=150; }
增强容错:用 queue 实现排队等待
当连接达到 max_conns 上限时,Nginx 默认返回 502。若希望更平滑应对突发流量,可加 queue(需 Nginx ≥ 1.23.3 或 Nginx Plus):
server 10.0.1.10:8080 max_conns=150 queue=10 timeout=30s;- 表示最多允许 10 个请求排队,超时未获取到连接则返回 503
数值设定建议
max_conns 不是拍脑袋定的,要贴合后端真实能力:
- 参考后端应用的连接上限,如 Tomcat 的
maxConnections或线程池大小 - 建议设为该值的 80%~90%,预留缓冲空间防抖动
- 避免设得过高(如后端 maxConnections=200,却配 max_conns=300),否则仍可能触发 Connection refused


















