least_conn;启用最少连接数调度需满足三条件:版本≥1.3.1、upstream首行声明、配置keepalive复用连接;须搭配max_conns、健康检查及stub_status验证生效。

直接在 upstream 块第一行写 least_conn; 就能启用最少连接数调度,不需要额外模块或参数——Nginx 1.3.1 起已内置支持,当前主流版本(如 1.20+)完全可用。
基础配置三步到位
只需确保三点:版本达标、策略声明、后端列出。
- 运行
nginx -v确认版本 ≥ 1.3.1(建议 ≥ 1.18) - 在
http块中定义upstream,首行即写least_conn; - 后续
server行可带健康检查参数(如max_fails=3 fail_timeout=30s),但不支持用weight干预 least_conn 的实时决策
必须配 keepalive 才真实生效
least_conn 统计的是 Nginx 与后端之间的活跃 TCP 连接数。如果每次请求都新建连接,连接数瞬间归零,策略就退化成轮询。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- 在
upstream块内加keepalive 32;(推荐值 16–64),表示每个 worker 进程最多复用 32 个空闲连接 - 在对应
location中启用 HTTP/1.1 复用:proxy_http_version 1.1;和proxy_set_header Connection ''; - 后端服务也要支持 keep-alive,例如设置
keepalive_timeout 75s;
避免调度失准的关键补充
least_conn 只看连接数,不感知节点是否卡死或失联,需叠加保护机制。
- 用
max_conns限制单节点并发上限,体现服务器能力差异(如高性能机设max_conns=2000,普通机设800) - 开启主动或被动健康检查,防止请求发给已失联但连接未关闭的节点
- 当多个节点连接数相同时,least_conn 会 fallback 到按
weight加权轮询(此时 weight 才起作用,但只是第二顺位)
验证是否真正生效
配置重载后不能只看是否启动成功,要确认行为符合预期。
- 开启
stub_status模块,在server块中加:location /nginx_status { stub_status; },访问后观察各后端 Active connections 是否趋于均衡 - 在后端机器执行
ss -s | grep 'estab'或netstat -an | grep :端口 | grep ESTAB | wc -l,比对连接数是否与 Nginx 统计一致 - 压测时关注 access log 中的
$upstream_addr字段,确认请求确实落在连接数更少的节点上

















