权重配置本身不直接提高集群稳定性,但它能增强负载分配的合理性,从而间接提升整体鲁棒性;真正起稳定作用的是权重与健康检查、状态标记(down/backup)的组合使用。

权重配置本身不直接提高集群稳定性,但它能增强负载分配的合理性,从而间接提升整体鲁棒性。真正起稳定作用的是权重与健康检查、状态标记(down/backup)的组合使用。
权重必须写在 upstream 的 server 行里
weight 参数只在 upstream 块内的 server 指令后生效,且必须是正整数:
- ✅ 正确写法:
server 10.0.0.1:8080 weight=3; - ❌ 错误写法:
server 10.0.0.1:8080; weight=3;(weight 不是独立指令) - ❌ 错误写法:
location / { proxy_pass http://backend; weight=2; }(语法报错)
权重仅对 round_robin 和 ip_hash 生效
默认轮询(round_robin)下,权重决定请求概率分布;启用 ip_hash 后,权重不改变哈希绑定逻辑,只在节点失效时参与备用选择:
- 两台服务器 weight=3 和 weight=1,长期统计下请求比接近 3:1,但小流量下可能出现连续打到同一台的情况
-
least_conn、fair、url_hash等算法完全忽略 weight 参数
用 weight=0 实现“软摘除”
设 weight=0 不等于下线,而是让该节点退出轮询队列,但仍接受健康检查探测:
- 适合临时降级:比如某台机器 CPU 飙高但尚未宕机,可先设 weight=0 观察
- 恢复时只需改回正整数,无需 reload,健康检查通过后自动回归流量池
- 注意:backup 节点不参与 ip_hash 计算,但会参与 round_robin 权重调度(只是默认不启用)
reload 前务必 nginx -t 验证
权重写错(如负数、小数、字符串)会导致 nginx -t 报 invalid number of the "weight" parameter,不验证直接 reload 可能导致 worker 进程退出、服务中断:
- 每次修改后运行
nginx -t,确认显示 test is successful - 再执行
nginx -s reload - 用
curl -I http://your-domain/快速验证 200 响应,再查后端 access_log 确认分发比例是否符合预期











