Nginx多节点负载均衡依赖upstream模块与匹配业务的分发策略:轮询/加权轮询适用于无状态服务;IP Hash保障会话粘滞但受NAT影响;least_conn适配长连接与异构耗时;健康检查(max_fails/fail_timeout)与容灾标记(backup/down)确保集群可靠性。

Nginx 实现多节点负载均衡,核心在于合理配置 upstream 模块并选用匹配业务特性的分发策略。它不依赖外部组件,原生支持多种算法,且所有策略均可与健康检查、容灾标记(如 backup、down)协同工作,真正实现“配置即生效”的轻量级集群治理。
轮询与加权轮询:适合大多数无状态服务
轮询是 Nginx 默认策略,按顺序将请求依次分发到每个后端节点,简单可靠,自动跳过失效节点(配合 max_fails 和 fail_timeout)。当后端服务器性能接近、应用无状态(如静态资源、REST API),直接使用轮询即可。
若节点硬件或部署环境存在差异(例如一台 16 核新机器,一台 4 核旧机器),应启用加权轮询:
- 通过
weight=显式指定权重,数值越大承担流量越多; - 权重比例决定长期请求分配比,例如
weight=3与weight=1的节点实际承接约 75% 和 25% 的流量; - 权重不建议频繁变动,原生 Nginx 修改后需重载配置(
nginx -s reload),可结合脚本+监控自动触发更新。
IP Hash:保障会话连续性
当后端未做 Session 共享(如 Redis 或数据库集中存储),用户登录态仅保留在某台服务器内存中,此时必须保证同一客户端始终打到同一节点——IP Hash 就是为此设计。
它对客户端 IP 做哈希运算,映射到固定后端。配置时只需在 upstream 块中添加 ip_hash; 指令。
- 优点:天然解决会话粘滞问题,无需改造应用;
- 注意:NAT 环境下(如大量用户共用出口 IP)会导致流量倾斜;
- 限制:增减节点会改变哈希空间,部分已有连接可能被重新分配,造成短暂会话中断。
最少连接(least_conn):适配长连接与异构耗时
轮询只看“顺序”,不看“忙闲”;而 least_conn 关注实时连接数,把新请求导向当前活跃连接最少的节点。
特别适用于:
- WebSocket、gRPC、SSE 等长连接场景;
- 后端处理时间差异大(如混合图像识别与文本查询);
- 节点性能不均但又不便设固定权重(例如容器自动伸缩中实例规格动态变化)。
该策略能更真实反映节点负载压力,实测在 10 节点集群中平均响应时间比轮询降低约 15%。
健康检查与容灾机制:让集群真正可靠
再好的分发策略也依赖节点可用性。Nginx 自带被动健康检查能力,关键参数组合如下:
-
max_fails=3:连续失败 3 次即标记为不可用; -
fail_timeout=30s:30 秒内不再向该节点转发请求; -
backup:声明备用节点,仅当所有主节点异常时启用; -
down:临时下线某节点,不参与任何调度(常用于维护前手动标记)。
这些设置直接写在 server 行末尾,例如:server 192.168.1.10:80 weight=2 max_fails=3 fail_timeout=30s;


















