轮询是nginx upstream默认策略,无需任何关键字;合法配置只需在http块内定义upstream并逐行列出server,如server 192.168.1.10; server 192.168.1.11;,顺序循环分发请求。

轮询是 Nginx upstream 的默认负载均衡策略,不需要任何关键字或额外声明——只要没写其他算法(比如 ip_hash 或 least_conn),它就自动启用。
轮询配置怎么写才合法
纯轮询只需在 upstream 块里逐行列出 server,不加任何参数即可:
server 192.168.1.10;server 192.168.1.11;server 192.168.1.12;
每行一个后端地址,支持域名、IP 加端口(如 backend.example.com:8080)。Nginx 按照它们在配置中出现的顺序,依次把请求分发过去,循环往复。
常见错误是误加 round_robin 这类关键词,例如:
upstream backend { round_robin; server a; server b; }这会直接导致启动失败,报错 unknown directive "round_robin"。
权重不是轮询的必需部分,但能改变分配比例
如果你希望某台服务器多承接些请求,可以加 weight 参数。它必须紧贴在 server 行末尾,中间不能换行、不能有空格以外的符号:
- ✅ 正确:
server 192.168.1.10 weight=3; - ❌ 错误:
server 192.168.1.10;weight=3; - ❌ 错误:
server 192.168.1.10 weight = 3;
权重是相对值:两台服务器设为 weight=4 和 weight=1,实际请求比就是 4:1;所有未设 weight 的默认为 1。
注意:权重不影响健康检查逻辑,max_fails 和 fail_timeout 需单独配置,否则宕机后不会自动剔除。
轮询如何应对后端故障
Nginx 默认会对后端做被动健康检查:
- 当某台服务器返回
500/502/503/504或连接超时,会被标记为不可用 - 默认“禁用”时长是 10 秒(由
fail_timeout=10s控制) - 在这期间,请求会跳过该节点,继续按轮询顺序往下走
- 如果所有后端都不可用,Nginx 会 fallback 到最近一次成功响应过的服务器(哪怕刚被标 down),避免完全中断服务
什么时候该用轮询,什么时候该换别的策略
轮询适合后端能力接近、无状态的服务,比如静态资源集群或轻量 API。
但它不感知实时负载:
- 一台高权重机器 CPU 已 95%,Nginx 仍会按比例继续派新请求
- 若想按真实连接数调度,应改用
least_conn - 若需用户会话保持(比如登录态),则选
ip_hash
修改配置后必须执行 nginx -s reload 才生效,仅改文件不重启 worker 进程,旧权重依然沿用。











