Skip to content
Nginx upstream 五种负载均衡策略

Nginx upstream 五种负载均衡策略 完整详解

一、默认策略:加权轮询(round_robin)

规则

  1. 无任何配置时默认启用
  2. 按请求顺序依次分发,默认权重一致
  3. 可手动配置weight调整权重,权重越高分到请求越多
  4. 自动剔除宕机节点,恢复后自动加入调度

配置

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;
}

限制

  1. 不支持backup备用节点
  2. 后端服务器上下线会打乱哈希分配,重新分配用户节点
  3. 局域网同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 备用机

规则

  1. 正常流量只走普通节点,备用节点backup闲置
  2. 所有主节点全部宕机、不可访问时,才自动切换到备用节点
  3. 主节点恢复正常,自动切回主节点

配置

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主备平时冷备,故障切换核心服务高可用、灾备集群