weight参数用于Nginx upstream中实现加权轮询负载均衡,数值越大分配请求概率越高,比例近似各server weight之比;默认值为1,仅支持整数,不支持小数或百分比,为0时停用该服务器;仅对round-robin算法生效,需配合健康检查使用,修改后reload即可生效。

在 Nginx 中,weight 参数用于 upstream 块内定义后端服务器的权重,从而实现加权轮询(Weighted Round Robin)负载均衡。权重值越大,该服务器被分配请求的概率越高,比例近似于各 server 的 weight 数值之比。
1. weight 参数的基本用法
在 upstream 配置块中,为每个 server 指令添加 weight=数值 即可:
upstream backend {
server 192.168.1.10:8080 weight=3;
server 192.168.1.11:8080 weight=1;
server 192.168.1.12:8080 weight=2;
}
上述配置表示:三台服务器的请求分发比例约为 3 : 1 : 2。Nginx 会按此权重循环调度,比如每 6 个请求中,分别分配 3、1、2 个给对应服务器。
2. weight 的默认值与取值范围
- 未显式设置
weight时,默认值为 1; - 支持整数,常见取值为 1–100,但理论上可更大;
- 不支持小数(如
weight=0.5会报错),也不支持百分比写法; - 权重为 0 表示该服务器不参与负载均衡(等效于
down,但语义不同)。
3. 注意事项和常见配合项
-
仅对 round-robin 算法生效:weight 是 round-robin 的扩展特性,若启用了其他算法(如
ip_hash、least_conn),weight 将被忽略; -
需搭配健康检查使用更可靠:weight 不自动感知节点故障,建议配合
max_fails和fail_timeout使用; - 权重影响的是请求次数,不是流量大小:如果各服务响应体差异极大,实际带宽分配未必严格按 weight 比例;
-
热更新生效:修改 weight 后 reload Nginx(
nginx -s reload)即可生效,无需重启。
4. 验证权重是否生效
可通过以下方式粗略验证:
– 在日志中开启 $upstream_addr 变量,统计各后端地址出现频次;
– 使用简单压测工具(如 ab 或 wrk)发送数百请求,观察分发分布;
– 注意:由于 Nginx 内部调度机制含缓存与连接复用,小样本可能有偏差,建议 ≥500 次请求再统计。


















