Windows下配置Nginx upstream加权轮询需在nginx.conf的upstream块中为server指定weight值,如weight=3、weight=1、weight=2,对应请求占比约50%、16.7%、33.3%,默认weight为1,配置后需nginx -t校验并nginx -s reload重载。

在 Windows 下配置 Nginx 的 upstream 加权轮询(weight),核心是修改 nginx.conf 中的 upstream 块,为每个后端服务器指定 weight 值。权重越高,该服务器被分配请求的概率越大,适用于后端服务器性能不均的场景。
确认 Nginx 版本支持 weight
Nginx 官方从 1.0.0 版本起就已支持 weight 参数,Windows 下使用的二进制包(如 nginx.org 官网提供的 Windows zip 包)默认包含该功能。无需额外编译,只要不是极老版本(如 0.8.x),均可直接使用。
修改 upstream 配置启用加权轮询
打开 conf/nginx.conf,在 http 块内添加或修改 upstream 定义。注意:weight 必须写在 server 指令后,且不能与 backup、down 等互斥参数共存于同一行。
示例配置:
upstream backend_cluster {
server 127.0.0.1:8081 weight=3;
server 127.0.0.1:8082 weight=1;
server 127.0.0.1:8083 weight=2;
}
说明:
- 默认 weight 为 1,未显式声明即等同于
weight=1 - 实际分发比例按权重值线性计算:上述三台服务器请求占比约为 3:1:2(即 50% / 16.7% / 33.3%)
- weight 只影响初始调度概率,不保证绝对精确的请求数比例(尤其在连接复用、短连接等场景下会有小幅波动)
关联 location 使用 upstream
在 server 块中,用 proxy_pass 引用刚定义的 upstream 名称:
server {
listen 80;
location / {
proxy_pass http://backend_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
注意:
-
proxy_pass后的地址必须以http://开头,且名称与 upstream 块名严格一致(区分大小写) - Windows 路径中反斜杠不影响配置,但推荐统一用正斜杠;配置文件保存时用 UTF-8 无 BOM 编码,避免解析错误
验证与重载配置
配置完成后,执行以下操作确保生效:
- 运行
nginx -t检查语法是否正确(输出success表示通过) - 若 Nginx 正在运行,执行
nginx -s reload重新加载配置(Windows 下需确保命令行以管理员权限运行,否则可能因权限不足失败) - 可通过反复访问测试接口 + 查看各后端日志请求频次,粗略验证权重分配是否符合预期
不复杂但容易忽略:weight 是静态配置,运行时无法动态调整,如需实时变更需配合 API 或外部工具(如 nginx-plus 或 OpenResty)。










