轮询是nginx默认负载均衡策略,无需额外声明,按upstream中server书写顺序均等分发请求;受max_fails、fail_timeout、backup和down等参数影响,故障时自动跳过并恢复。

轮询是 Nginx 默认的负载均衡策略,无需额外声明即可生效,核心在于 upstream 块中 server 指令的排列与基础参数控制。
轮询的基本配置结构
只要在 upstream 块中列出多个 server,Nginx 就自动启用轮询:
- 每个 server 行代表一台后端节点,按书写顺序参与轮转
- 不指定 weight、max_fails 等参数时,所有节点权重默认为 1,完全均等分配
- 请求严格按“第一台→第二台→第三台→回到第一台”的循环顺序分发
影响轮询行为的关键参数
虽然轮询本身无状态、无计算,但以下参数会实际改变其运行效果:
- max_fails 和 fail_timeout:当某台服务器连续失败 max_fails 次(如 3 次),将在 fail_timeout 时间内(如 30s)被临时剔除,轮询队列跳过它,故障恢复后自动重新加入
- backup:标记为 backup 的 server 不参与常规轮询,仅当所有非 backup 节点不可用时才启用
- down:显式标记该 server 暂时下线,不接收任何请求,也不参与健康检查
轮询的实际分配逻辑
假设有三台服务器:A、B、C,且均未配置 weight 或故障参数:
- 第 1 个请求 → A
- 第 2 个请求 → B
- 第 3 个请求 → C
- 第 4 个请求 → A(重新开始循环)
- 即使某台服务器响应慢或 CPU 高,只要未触发 max_fails,仍会继续接收请求
验证与调试建议
确认轮询是否按预期工作,可结合日志和工具观察:
- 在每台后端服务上记录访问来源 IP 和时间,比对请求到达顺序
- 使用 ab 或 wrk 发起并发请求(如
ab -n 600 -c 60 http://your-nginx/),检查各节点请求数是否接近 200 - 临时关闭某台后端服务,观察 Nginx 访问日志是否跳过该节点并持续向其余节点分发











