Nginx upstream 五种负载均衡策略 完整详解
一、默认策略:加权轮询(round_robin)
规则
- 无任何配置时默认启用
- 按请求顺序依次分发,默认权重一致
- 可手动配置
weight调整权重,权重越高分到请求越多 - 自动剔除宕机节点,恢复后自动加入调度
配置
nginx
upstream server_pool {
server 10.0.0.94:18043 weight=3;
server 10.0.0.95:18043 weight=1;
}特点
- 均衡分流,适合服务器性能相近场景
- 长连接会导致轮询失效,同一连接固定访问一台服务
二、IP哈希策略:ip_hash
规则
根据客户端访问IP进行哈希计算,固定分配到同一台后端服务器
作用
解决会话保持问题,用户始终访问同一节点,登录状态不丢失
配置
nginx
upstream server_pool {
ip_hash;
server 10.0.0.94:18043;
server 10.0.0.95:18043;
}限制
- 不支持
backup备用节点 - 后端服务器上下线会打乱哈希分配,重新分配用户节点
- 局域网同IP用户会全部挤到同一台服务
三、最少连接策略:least_conn
规则
自动统计后端服务器当前活跃连接数,优先分配请求给连接数最少的节点
适用场景
服务器性能差异大、请求处理耗时不一致(文件上传、接口慢查询)
配置
nginx
upstream server_pool {
least_conn;
server 10.0.0.94:18043;
server 10.0.0.95:18043;
}四、URL哈希策略:url_hash
规则
根据请求访问的URL地址做哈希分配 相同接口路径固定转发到同一台后端
核心用途
静态资源缓存、文件资源定向分发,提升缓存命中率
配置
nginx
upstream server_pool {
hash $request_uri;
server 10.0.0.94:18043;
server 10.0.0.95:18043;
}五、主备模式:backup 备用机
规则
- 正常流量只走普通节点,备用节点
backup闲置 - 所有主节点全部宕机、不可访问时,才自动切换到备用节点
- 主节点恢复正常,自动切回主节点
配置
nginx
upstream server_pool {
# 主节点
server 10.0.0.94:18043 max_fails=2 fail_timeout=15s;
server 10.0.0.95:18043 max_fails=2 fail_timeout=15s;
# 备用节点
server 10.0.0.96:18043 backup;
}补充参数
max_fails=2:请求失败2次判定节点故障fail_timeout=15s:故障后15秒不再转发请求
限制
仅支持默认轮询,ip_hash/least_conn 模式下backup失效
六种附加通用参数(全通用)
nginx
server ip:端口
weight=5 # 权重
max_fails=3 # 最大失败次数
fail_timeout=20s # 故障冷却时间
backup # 备用服务器
down # 永久下线节点五大策略场景选型对照表
| 负载策略 | 核心特点 | 适用业务 |
|---|---|---|
| 加权轮询 | 默认均分流量 | 普通接口、后台管理、无状态服务 |
| ip_hash | 固定用户访问同一节点 | 需要登录会话保持系统 |
| least_conn | 优先空闲服务器 | 耗时接口、大数据请求 |
| url_hash | 同路径固定节点 | 静态资源、图片、文件服务 |
| backup主备 | 平时冷备,故障切换 | 核心服务高可用、灾备集群 |