默认轮询是nginx最简单负载均衡策略,按配置顺序循环分发请求;需确认upstream模块可用,配置upstream块与proxy_pass联动,并通过日志验证分发均匀性。

默认轮询(Round Robin)是 Nginx 最简单、最常用的负载均衡策略,无需额外配置即可启用。只要在 upstream 块中列出多个后端服务器,Nginx 就会自动按顺序逐一分发请求。
一、确认 Nginx 已安装并支持 upstream 模块
Nginx 开源版默认编译包含 http_upstream_module,几乎无需额外操作。可通过以下命令验证:
nginx -V 2>&1 | grep -o with-http_upstream_module
若输出含该字符串,说明模块可用。如使用精简版或自定义编译,缺失此模块将无法配置负载均衡。
二、编写最简 upstream + server 配置
在 nginx.conf 的 http 块内添加如下内容:
upstream backend {
server 192.168.1.10:8080;
server 192.168.1.11:8080;
server 192.168.1.12:8080;
}
<p>server {
listen 80;
location / {
proxy_pass <a href="https://www.php.cn/link/65b5b8d1f89bf53a5713bc3afdd83e9e">https://www.php.cn/link/65b5b8d1f89bf53a5713bc3afdd83e9e</a>;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}</p>-
upstream 名称(如 backend) 是自定义标识,需与
proxy_pass中的地址一致 - 每个
server行代表一个后端应用节点,支持 IP+端口、域名或 Unix socket - 未指定权重、max_fails 等参数时,Nginx 自动启用默认轮询:请求依次分发给列表中的服务器
三、理解轮询的实际行为
假设有 3 台后端,Nginx 接收连续 6 个请求,分发顺序为:
请求1 → 192.168.1.10 请求2 → 192.168.1.11 请求3 → 192.168.1.12 请求4 → 192.168.1.10 请求5 → 192.168.1.11 请求6 → 192.168.1.12
注意:
- 轮询不感知后端实际负载或响应时间,仅按配置顺序循环
- 某台服务器宕机时,Nginx 默认会尝试一次,失败后跳过该节点(需配合
max_fails和fail_timeout控制重试逻辑) - 连接断开或超时不会自动回退到前一台,而是继续下一轮调度
四、验证配置是否生效
完成配置后执行:
nginx -t && nginx -s reload
然后向 Nginx 发起多次请求(例如用 curl 或浏览器反复刷新),并在各后端服务器上查看访问日志:
# 在每台后端执行(假设日志路径为 /var/log/nginx/access.log) tail -f /var/log/nginx/access.log | grep "your_test_path"
观察 IP 分布是否均匀。若只打到某一台,常见原因包括:
- 浏览器/客户端启用了 HTTP Keep-Alive,复用连接导致看似“不轮询”——可换用
curl -H "Connection: close"测试单次请求 - upstream 块写在了某个
server块内部(应始终位于http块下) - proxy_pass 地址拼写错误,如写成
https://www.php.cn/link/65b5b8d1f89bf53a5713bc3afdd83e9e/多了个斜杠(部分版本会静默失效)










