Nginx备用服务器节点需用backup关键字标识,仅在主节点全部不可用时启用;必须置于upstream块末尾,不参与轮询,不可配weight等参数,且仅在round-robin模式下有效。

在 Nginx 轮询负载均衡中添加备用服务器节点,核心是使用 backup 关键字,而不是调低 weight 或加其他修饰。它不是“低权重节点”,而是“不参与日常分发、只兜底”的独立角色。
备用节点的配置写法
必须在 upstream 块中,将备用节点单独列出,并带上 backup 标识:
- 所有非 backup 的 server 必须写在 backup 之前(虽非强制,但强烈建议)
- backup 节点行末尾直接加
backup;,无需 weight、max_fails 等参数(即使写了 weight,Nginx 也会忽略) - 示例:
upstream backend {
server 192.168.1.10:8080 weight=3 max_fails=2 fail_timeout=30s;
server 192.168.1.11:8080 weight=2 max_fails=2 fail_timeout=30s;
server 192.168.1.12:8080 backup;
}
备用节点生效的前提条件
backup 不会自动上线,它依赖健康检查机制判断主节点是否真的不可用:
- 所有非 backup 节点必须被 Nginx 标记为 down(通过连续失败达到
max_fails次,且在fail_timeout时间内未恢复) - 也可以手动标记为 down:
server 192.168.1.10:8080 down;,此时流量立即转向 backup - 如果 upstream 中只有 backup 节点,或所有节点都标了 backup,Nginx 将无法选后端,返回 502 错误
让备用节点更可靠的操作建议
虽然 backup 本身不参与轮询,但上线后也要能稳住:
- 为 backup 节点也加上
max_fails和fail_timeout,防止它自己上线后快速宕机却无法被摘除 - 若需多台备用机,可写多行
server ... backup;,它们之间按默认轮询方式启用(不加权、无优先级) - 不要给 backup 加
slow_start—— Nginx 会报错,因为 backup 上线是紧急切换,不走平滑启动
常见误区提醒
容易混淆的几种错误做法:
- weight=0 backup:weight=0 会让该节点既不参与调度,又无法被健康检查监控,失去兜底能力
- 把 backup 放在 upstream 最前面:虽不报错,但违反语义直觉,维护时易误判;Nginx 文档也建议放在最后
- 在 ip_hash 或 least_conn 模式下用 backup:backup 仅在默认轮询(round-robin)模式下有效,其他算法不支持


















