backup参数用于标记nginx上游中仅在所有非backup节点不可用时才启用的备用服务器,需配合max_fails和fail_timeout等健康检查参数才能生效,且仅在round-robin模式下有效。

在 Nginx 中,backup 参数用于标记某台后端服务器为“备用节点”——它默认不参与负载均衡,仅当所有非 backup 的上游服务器全部不可用时才被启用。
backup 的基本用法
在 upstream 块中,为 server 指令添加 backup 标志即可:
upstream backend {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
server 192.168.1.12:8080 backup;
}
此时,192.168.1.12 不会接收任何正常流量,除非前两台都健康检查失败或主动下线。
与健康检查配合才真正生效
backup 本身不触发自动切换,必须配合 Nginx 的健康检查机制(如 health_check 或第三方模块)才能实现故障自动转移:
- 使用
ngx_http_upstream_module自带的被动健康检查(基于失败请求次数和超时)时,需配置max_fails和fail_timeout - 若启用了
keepalive或使用了nginx-plus,可配置主动健康检查,更及时发现节点状态变化 - 注意:开源版 Nginx 默认无主动健康检查,需依赖
proxy_next_upstream配合失败重试逻辑来间接触发 backup 切换
常见误区与注意事项
很多人误以为加了 backup 就能“热备自动接管”,实际中容易踩坑:
-
backup服务器不会参与轮询、加权、IP hash 等任何常规调度策略 - 即使 backup 节点响应更快或更空闲,只要其他节点“看起来可用”,它就不会被选中
- 多个 backup 节点之间仍按顺序尝试,不支持权重或优先级排序(除非用第三方模块如
nginx-upstream-check-module) - 务必确认 upstream 中至少有一台非 backup 服务器处于 active 状态,否则 backup 会被立即启用——这可能违背设计初衷
简单验证方式
可通过以下方法快速验证 backup 是否按预期工作:
- 临时停掉所有非 backup 后端服务,观察访问是否落到 backup 节点(检查 access log 或返回内容)
- 用
curl -I查看响应头中的X-Upstream-Addr(需在 location 中添加add_header X-Upstream-Addr $upstream_addr;) - 结合
stub_status或第三方监控工具查看 upstream 状态统计











