Nginx负载均衡中备用服务器通过upstream的backup参数实现故障转移,仅当所有非backup节点因max_fails和fail_timeout被标记为不可用时才启用,且需确保其配置、资源与主节点一致并经压测验证。

在 Nginx 负载均衡中设置备用服务器实现故障转移,核心是使用 upstream 块中的 backup 参数,配合健康状态感知机制,让流量在主节点全部失效时自动切到备用节点。
配置 backup 服务器节点
在 upstream 定义中,为备用服务器显式添加 backup 标志。它默认不参与任何常规调度(如轮询、权重、least_conn),仅当所有非 backup 节点被标记为不可用时才启用:
- 非 backup 节点需全部因失败达到
max_fails且处于fail_timeout窗口内,Nginx 才会启用 backup 节点 - backup 节点本身也支持
max_fails和fail_timeout,防止它自己异常却仍被调用 - 示例:
server 192.168.1.99:8080 backup max_fails=2 fail_timeout=20s;
搭配被动健康检查参数
backup 切换依赖 Nginx 对主节点的“失效判定”,需合理设置以下参数:
-
max_fails=3:连续 3 次请求失败(连接拒绝、超时或指定 HTTP 错误码)后标记该节点下线 -
fail_timeout=30s:30 秒内不向该节点发新请求;超时后尝试恢复连接 -
proxy_next_upstream error timeout http_502 http_503 http_504:在 location 中启用,允许将这些响应视为失败并触发重试
确保 backup 节点能独立承载全量流量
backup 不是“低配容灾”,而是真实灾备节点:
- 它的硬件资源、应用版本、数据库连接、缓存策略等必须与主集群一致
- 若 backup 节点未部署 Session 共享(如 Redis)、未同步静态资源或配置有差异,切换后可能返回 500 或数据错乱
- 建议定期用压测工具模拟全量流量打到 backup,验证其稳定性
验证故障转移是否生效
上线前务必实测,避免配置形同虚设:
- 手动停掉全部主节点(如
systemctl stop php-fpm或关服务端口),观察 access log 是否开始记录 backup 节点 IP - 检查 Nginx error log,确认出现类似
upstream server temporarily disabled的日志 - 用
curl -I http://your-domain/多次请求,响应应始终为 200,而非 502/503


















