轮询策略是nginx高可用架构的轻量起点,需配合健康检查(max_fails/fail_timeout)、backup备份节点及keepalive连接复用等机制实现稳定分流。

轮询策略是 Nginx 实现高可用架构最轻量、最直接的起点。它本身不保证高可用,但配合健康检查、容错和备份机制后,就能构成稳定可靠的流量分发基础。
定义 upstream 与基础轮询
在 http 块中声明 upstream,列出所有后端服务器地址,Nginx 默认按顺序轮流分发请求:
- 每台 server 不写额外参数时,权重为 1,请求严格循环分配(如三台则 1→2→3→1…)
- 无需启用特殊指令,只要配置了多个 server,就自动启用轮询
- 建议使用内网 IP 和明确端口(如 192.168.1.10:8080),避免 DNS 解析开销
加入健康检查与故障隔离
轮询默认不感知后端是否“真可用”,必须靠参数主动识别并临时剔除异常节点:
- 为每个 server 添加 max_fails=3 fail_timeout=30s:连续失败 3 次后,30 秒内不再转发请求
- 失败判定包括连接超时、拒绝连接、502/503 等代理错误,但不包含应用返回的 500
- 若需检测 HTTP 层状态码(如返回 5xx 就判为失败),需启用 upstream_check_module(开源版)或 Nginx Plus
设置 backup 备份节点实现降级能力
当所有主节点都不可用时,backup 节点才参与调度,这是构建服务兜底的关键一环:
- 在 upstream 中某 server 行末尾加 backup,例如:server 192.168.1.100:8080 backup;
- backup 只在 round-robin 模式下生效,且不能全部设为 backup(否则无可用节点,返回 502)
- backup 节点也建议配置 max_fails/fail_timeout,确保它被启用后也能自我保护
- 上线前务必手动验证 backup 节点的服务可访问性,Nginx 不会预检
优化连接与验证效果
减少无效建连、确认分流真实生效,是让轮询真正落地的关键细节:
- upstream 块中添加 keepalive 32,复用连接池,降低后端压力
- location 块中启用 HTTP/1.1 长连接:proxy_http_version 1.1; proxy_set_header Connection '';
- 用 nginx -t 校验语法,再 nginx -s reload 生效
- 通过后端 access.log 观察 IP 分布,或用 curl -I 多次请求 + 查看响应头中的 Server 字段来追踪实际路由











