直接在upstream的server行末尾加down并reload即可立即下线节点:必须紧贴地址端口后、分号前,如server 192.168.1.10:8080 down;,下线后零流量、无探测、不参与故障转移,恢复时删down并reload。

直接在 upstream 的 server 行末尾加 down,再执行 nginx -s reload,就能让目标节点立即停止收请求——不转发、不探测、不参与故障转移,其他节点照常运行,整个过程业务无感。
down 参数怎么写才有效
它必须紧贴在地址和端口之后、分号之前,单独存在:
- ✅ 正确:
server 192.168.1.10:8080 down; - ❌ 错误:
server 192.168.1.10:8080 max_fails=1 down;(混用动态参数,校验失败) - ❌ 错误:
server 192.168.1.10:8080; down;(换行或分号后加,语法无效)
下线后节点实际表现
被标记 down 的节点会彻底退出 Nginx 的调度视野:
- 新请求零流量进入,负载均衡自动跳过它
- 即使配置了
health_check,也不会向它发任何探测包 - 不参与故障转移逻辑——哪怕只剩一台正常节点,它也不会被“拉回来”
- 不影响其余节点的权重分配和健康检查行为
配合 backup 实现自动接管
如果希望主节点下线后流量自动切到备用机,可提前配置 backup 节点:
- 正常时:只有非 backup 的 server 参与轮询,backup 完全静默
- 当所有非 backup 节点都被设为 down 或宕机时,backup 才会被激活
- 示例:
server 192.168.1.100:8080 backup;
维护完成后的恢复操作
三步即可让节点回归流量:
- 先验证服务已就绪,例如
curl http://192.168.1.10:8080/health返回 200 - 删掉 upstream 配置中对应 server 行末尾的 down
- 再次执行
nginx -s reload,流量实时恢复,无丢失
注意:down 状态不会持久化,Nginx 主进程重启后自动清空,下次维护仍需重新配置。











