跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

Windows下Nginx负载均衡轮询算法配置与测试

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 次。权重只影响调度频次,不改变轮询本质。

相关文章