轮询是Nginx默认负载均衡策略,按server声明顺序轮流分发请求,默认权重为1;支持max_fails和fail_timeout实现TCP层容错;适用于性能相近、无状态、短请求场景。

轮询是 Nginx 默认的负载均衡策略,不需要额外声明,只要在 upstream 块里列出后端服务器地址,Nginx 就自动按顺序轮流分发请求。
基础配置写法
每个 server 指令代表一个后端节点,支持 IP + 端口(如 192.168.1.10:8080),默认权重为 1,所有节点被等比例轮转调度。
- 不加任何参数,就是轮询
- 顺序即分发顺序:第 1 个请求 → 第 1 个 server,第 2 个请求 → 第 2 个 server,依此类推,循环往复
- 示例配置:
upstream backend {
server 192.168.1.101:80;
server 192.168.1.102:80;
server 192.168.1.103:80;
}
server {
listen 80;
location / {
proxy_pass http://backend;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
增强可用性:故障自动剔除
轮询本身不主动探测服务健康状态,但可通过 max_fails 和 fail_timeout 实现 TCP 层面的基础容错。
-
max_fails=3:连续 3 次连接失败后,标记该节点为不可用 -
fail_timeout=30s:进入不可用状态后,30 秒内不再转发请求;超时后尝试恢复连接 - 可直接加在 server 行末,例如:
server 192.168.1.101:80 max_fails=3 fail_timeout=30s;
适用与限制场景
轮询适合简单、轻量、无状态的服务部署,但要注意它的天然局限。
- 适合:后端服务器性能相近、请求处理时间短且稳定、无需会话保持(如静态资源、API 网关)
- 不适合:服务器性能差异大(弱机容易过载)、需要同一用户始终打到同一台(如未做 session 共享的登录态服务)、长连接或慢请求较多(可能堆积)
- 注意:它不感知 CPU、内存等真实负载,也不做 HTTP 层健康检查(如只看返回码是否 200)


















