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