轮询是nginx默认负载均衡方式,按顺序将请求分发至upstream中多个后端服务器,自动跳过不可用节点;支持加权轮询,通过weight参数按性能差异分配请求比例。

轮询是 Nginx 默认的负载均衡方式,它和 proxy_pass 配合使用,就能把客户端请求自动分发到后端多个服务节点,同时对外只暴露一个入口地址——这就是典型的反向代理 + 负载均衡组合。
轮询机制怎么起作用
当 Nginx 收到请求,且配置了 upstream 块并包含多个 server 地址时,它会按顺序轮流把请求交给每个后端服务器处理。如果某台服务器不可用(比如超时或返回 502),Nginx 会临时跳过它,等恢复后再重新纳入轮询队列。
- 不需要额外开启模块,1.0+ 版本默认支持
- 不依赖 cookie 或 session 粘性,纯无状态分发
- 适合 HTTP/HTTPS、REST API 等无会话依赖的服务
基础配置示例
在 http 块中定义 upstream,再在 server 块里用 proxy_pass 引用它:
http {
upstream backend_servers {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
server 192.168.1.12:8080;
}
server {
listen 80;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
}
注意:proxy_pass 后面必须是 http:// 开头的 upstream 名称(不能写 IP),否则无法触发轮询逻辑。
安全更新和维护 CLI Proxy API(CPA)部署与配置。用于 CPA 镜像升级、配置变更、认证目录兼容修复、上线验证与回滚。适用于用户提到“CPA 更新/升级/配置改了/容器重建/回滚”等场景。
加权轮询让分配更合理
如果后端服务器性能差异大,比如一台是 16 核,另两台是 4 核,可以给它们分配不同权重,让强机器多承接请求:
-
server 192.168.1.10:8080 weight=3;→ 接收约 3/5 的请求 server 192.168.1.11:8080 weight=1;server 192.168.1.12:8080 weight=1;
weight 是相对值,不是百分比,总权重为 5 时,第一台理论占比就是 3 ÷ 5 = 60%。
实际使用要注意的细节
轮询本身简单,但搭配 proxy_pass 时容易忽略几个关键点:
-
proxy_pass末尾是否带斜杠会影响路径转发(如proxy_pass http://backend/;会剥离 location 路径) - 建议加上
proxy_next_upstream error timeout http_500 http_502;,让失败请求自动转给下一台 - 若后端服务有重定向(302),需配合
proxy_redirect修正响应头中的 Location 字段 - 日志里可通过
$upstream_addr查看本次请求实际转发到了哪台机器










