nginx upstream默认轮询,无需关键字;加权轮询只需在server行添加weight=数值,未写weight的默认为1;切回轮询只需删除weight参数,修改后须nginx -t验证并reload生效。

直接改 upstream 块里的 server 行,不需要加任何算法关键字,也不用删配置重写——轮询是默认行为,权重靠 weight 参数激活。
轮询模式:什么都不用加
只要 upstream 块里只写 server 地址,不带 weight、ip_hash 或 least_conn 等关键词,Nginx 就自动走轮询:
- 请求按顺序逐一分配:第一台 → 第二台 → 第三台 → 第一台……循环下去
- 某台服务器连续失败 max_fails 次后,会被临时剔除 fail_timeout 秒
- 所有 server 默认 weight=1,所以实际就是 1:1:1 均分
示例(纯轮询):
upstream api {server 192.168.1.10:8000;
server 192.168.1.11:8000;
server 192.168.1.12:8000;
}
切换到加权轮询:给 server 加 weight 参数
在每行 server 后面紧跟着写 weight=数值,整数,最小为 1。权重是相对比值,不是绝对值:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- weight=3 和 weight=1 的两台机器,理论流量比约为 3:1
- weight 必须写在同一行 server 指令里,不能换行,也不能有空格以外的分隔符
- 没写 weight 的 server 默认 weight=1
示例(加权轮询):
upstream api {server 192.168.1.10:8000 weight=3;
server 192.168.1.11:8000 weight=2;
server 192.168.1.12:8000;
}
切回去?删掉 weight 就行
想从加权切回纯轮询,不用动 upstream 结构,只需把所有 weight=xxx 全部删掉或注释掉:
- 保留 server 地址,去掉 weight 参数,Nginx 下次 reload 就恢复轮询
- 不要写 round_robin、default 或其他关键词——Nginx 不识别,会报错
- 修改后必须执行 nginx -t 验证语法,再 nginx -s reload 生效
注意别踩坑
常见错误会直接导致 nginx 启动失败或权重不生效:
- 在 upstream 块开头写 round_robin; → 报错 unknown directive
- server 地址和 weight 分两行写,或中间加了等号空格:weight = 3 → invalid number of arguments
- 混用 weight 和 backup:带 backup 的 server 不能设 weight
- 只改配置不 reload:旧 worker 进程仍按旧规则跑,新配置不会生效










