Nginx在Windows下默认启用轮询负载均衡,只需配置upstream块指定后端服务器,proxy_pass指向该组即可实现请求依次分发;可配合权重、健康检查等进阶设置优化分配策略。

Windows 下配置 Nginx 实现负载均衡轮询(Round Robin)非常直接,它默认就是启用的,无需额外开启开关。关键在于正确配置 upstream 块,并确保后端服务可访问。
一、基础轮询配置写法
Nginx 默认的轮询策略是每个请求按顺序分发给 upstream 中定义的服务器,不考虑权重或健康状态(除非显式配置)。配置示例如下:
在 nginx.conf 的 http 块内添加:
upstream backend_servers {
server 127.0.0.1:8081;
server 127.0.0.1:8082;
server 127.0.0.1:8083;
}
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
保存后重启 Nginx(nginx -s reload),请求 localhost 就会依次打到 8081 → 8082 → 8083 → 8081 ……
二、验证轮询是否生效
最简单的方法是让每个后端服务返回唯一标识,比如当前端口或服务名:
- 启动三个简易 HTTP 服务(可用 Python 快速起):
python -m http.server 8081 --directory "C:\srv1"(在 srv1 目录放一个 index.html 显示 “Server-8081”)
同理准备 8082 和 8083 对应页面 - 浏览器连续刷新
http://localhost/,观察响应内容是否按顺序循环变化 - 用 curl 命令快速验证:
for /l %i in (1,1,6) do @curl -s http://localhost/ | findstr "Server"
三、常见影响轮询效果的因素
即使配置正确,也可能看起来“没轮询”,原因通常有这些:
-
浏览器或客户端缓存:禁用缓存测试,或加时间戳参数(如
?t=123) -
Keep-Alive 连接复用:Nginx 默认保持连接,单个长连接内的多个请求可能落到同一台后端;可在 upstream 中加
keepalive 32;并在 location 中启用 connection reuse,但轮询粒度仍是请求级,不影响整体顺序 -
后端主动拒绝或超时:若某台服务不可达,Nginx 会临时剔除它(需配合
max_fails和fail_timeout),导致轮询序列跳过该节点 -
未启用 proxy_http_version 1.1:建议加上
proxy_http_version 1.1;和proxy_set_header Connection '';,避免旧协议下连接行为异常
四、进阶:带权重的轮询(Weighted Round Robin)
如果希望某台机器承担更多流量,可加 weight 参数:
upstream backend_servers {
server 127.0.0.1:8081 weight=3;
server 127.0.0.1:8082 weight=1;
server 127.0.0.1:8083 weight=2;
}
此时请求分配比例约为 3:1:2,总权重为 6,每 6 次请求中,8081 接收 3 次,8082 接收 1 次,8083 接收 2 次。权重只影响调度频次,不改变轮询本质。

















