Nginx轮询调度不提升处理能力上限,而是通过按序轮流分发请求实现资源均衡利用;默认权重为1,适用于无状态、响应相近的服务,需配置max_fails/fail_timeout健康检查及X-Real-IP透传,遇会话依赖或性能差异应切换算法。

Nginx 轮询调度是 Web 服务集群中最基础、最常用的负载分发方式,它不依赖额外模块,开箱即用,适合多数中小型业务场景。
轮询调度的核心逻辑
轮询(Round Robin)按配置顺序依次将请求分发给后端服务器,每个节点轮流接收一个请求。默认所有 server 权重为 1,即等比例分配流量。例如三台服务器 A、B、C,请求到达顺序就是 A→B→C→A→B→C……循环往复。
- 无需客户端或应用层干预,完全由 Nginx 在反向代理层完成
- 不绑定用户会话,天然无状态,适合无状态 API 或静态资源服务
- 底层基于 TCP 连接探测做简单健康检查,若某节点无法建立连接,Nginx 会临时跳过它
典型配置与关键参数
在 nginx.conf 的 http 块中定义 upstream 即可启用轮询:
upstream web_cluster {
server 192.168.8.102:80;
server 192.168.8.103:80;
server 192.168.8.104:80;
}
然后在 server 块中调用:
location / {
proxy_pass http://web_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
- max_fails=3 fail_timeout=30s:建议为每台 server 显式添加,表示连续失败 3 次后,30 秒内不再转发请求到该节点
- 不写 weight 参数时,所有节点权重相同;若需微调,可设如
server 192.168.8.102 weight=2;,使其承担约 2/5 的请求 - backup 标记可用于容灾节点,仅当其他节点全部失效时才启用
适用场景与注意事项
轮询调度最适合后端服务器硬件配置相近、应用响应时间波动小、且业务本身不依赖粘性会话的场景,比如博客系统、教育平台首页、CMS 内容展示等。
- 避免用于强会话依赖型服务(如未做 Redis 共享 session 的登录态),否则用户可能反复跳转导致登出
- 短连接高频请求下,若后端处理耗时不均,可能出现瞬时负载倾斜;此时可叠加
least_conn指令优化 - 不支持自动识别 HTTP 层返回码(如 500),需配合第三方模块或外部探针实现更精细健康检查
验证与日常维护
上线后可通过简单方式快速验证轮询是否生效:
- 在每台后端服务器返回页中嵌入唯一标识(如
Server: node-A),多次刷新页面观察切换规律 - 使用
curl -I http://nginx-ip/查看响应头中的 Server 字段变化 - 查看 Nginx access.log,结合 $upstream_addr 字段确认每次请求实际打到了哪台后端
- 修改 upstream 后 reload 配置(
nginx -s reload),无需重启进程,平滑生效


















