down参数是Nginx最轻量可控的静态节点隔离方式,reload后立即生效,不删配置、不中断服务、不发探测包,且仅支持与weight、backup等静态参数共存。

用 down 参数手动下线故障节点,是 Nginx 最轻量、最可控的隔离方式——不删配置、不中断服务、不发探测包,reload 后立即生效。
down 参数的核心行为
它不是靠失败次数或超时判断的动态下线,而是静态标记。Nginx 在加载 upstream 配置时就将带 down 的节点彻底剔除出调度链路:
- 新请求完全不转发过去
- 健康检查模块(哪怕启用了
health_check)自动跳过,不发任何探测请求 - 不参与故障转移逻辑,哪怕集群只剩一台正常节点,它也不会被“拉回来”
- 不影响其他 server 的权重分配和轮询顺序
正确配置 down 的写法
必须严格遵循语法,否则 reload 会失败:
- ✅ 正确:
server 192.168.1.11:8080 down;(down 写在地址端口之后、分号之前) - ❌ 错误:
server 192.168.1.11:8080; down;(换行或分号后加) - ❌ 错误:
server 192.168.1.11:8080 max_fails=1 down;(不能与max_fails、fail_timeout等混用) - ✅ 可共存:
server 192.168.1.11:8080 weight=2 down;(仅限weight、backup等静态参数)
配合 backup 实现自动接管
若希望主节点下线后流量立刻切到备用机,可提前配置 backup 节点:
- 正常情况下,backup 节点完全静默:不参与轮询、不建连接、不被探测
- 当所有非 backup 节点都被设为 down 或实际宕机时,backup 才会被激活
- 示例:
server 192.168.1.100:8080 backup;
下线与恢复全流程
整个过程无需重启 Nginx,业务无感:
- 确认目标节点已无新请求进入(如观察 access_log 停止增长)
- 在 upstream 中对应 server 行末尾添加 down,执行
nginx -s reload - 维护完成后,先验证后端服务可用(如
curl http://192.168.1.11:8080/health) - 删除配置中该行的 down,再次
nginx -s reload,流量即刻回归
注意:down 状态不会持久化,Nginx 主进程重启后自动清空,需重新配置。


















