加权轮询配合backup节点的核心是主节点按权重分配流量,backup仅在所有主节点失效时启用;weight只作用于非backup节点,backup必须显式声明且不参与权重计算。

加权轮询配合备份节点的配置,核心在于区分“主节点流量分配”和“备用节点兜底逻辑”——两者互不干扰:权重只影响正常在线的主节点之间请求比例,backup 节点完全不参与轮询计算,只在所有主节点失效时才启用。
主节点用 weight 控制流量比例
给性能强、稳定性高的服务器设较高 weight,弱一些的设较低值。Nginx 按照权重总和归一化后分配请求,比如:
- weight=4 的节点承担约 57% 请求(4 ÷ (4+1+1))
- weight=1 的两个节点各承担约 14%
配置示例:
upstream backend {server 192.168.1.10:8080 weight=4 max_fails=2 fail_timeout=20s;
server 192.168.1.11:8080 weight=1 max_fails=2 fail_timeout=20s;
server 192.168.1.12:8080 weight=1 max_fails=2 fail_timeout=20s;
}
backup 节点单独声明,不写 weight
backup 服务器必须明确标记为 backup,且不能带 weight 参数(即使写了也会被忽略)。它不计入任何权重计算,也不出现在常规请求日志中。
- 必须放在所有非 backup server 之后(非强制但强烈建议)
- 建议同样配置 max_fails 和 fail_timeout,防止它自己上线后立即故障
- 支持多个 backup,它们之间按默认轮询方式启用(无权重)
完整 upstream 示例:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
server 192.168.1.10:8080 weight=4 max_fails=2 fail_timeout=20s;
server 192.168.1.11:8080 weight=1 max_fails=2 fail_timeout=20s;
server 192.168.1.12:8080 weight=1 max_fails=2 fail_timeout=20s;
server 192.168.1.13:8080 backup max_fails=2 fail_timeout=20s;
}
健康检查是 backup 启动的前提
backup 不会因为某台主节点响应慢就触发,只有当所有非 backup 节点都被 Nginx 标记为“不可用”时才会启用。这个判断依赖于:
- max_fails:连续失败多少次后标记为不可用
- fail_timeout:失败计数窗口时间(秒),超时后重置计数
- 手动标记 down 也会让该节点退出轮询,加速 backup 切换
注意:backup 节点不能配 slow_start,否则 Nginx 启动时报错。
别把 backup 当成低权重节点
常见误区是写 server x.x.x.x backup weight=0,这会导致该节点既不参与轮询,也无法被健康检查监控——失去兜底能力。
- 想少分流量 → 降低 weight(如 weight=1)
- 想完全不接活、只兜底 → 加 backup,不写 weight
backup 是纯高可用角色,不是流量调节手段。

















