配置实例

upstream  model{
    ip_hash;
    server www.aaa.cn;
    server zb.bbb.cn;
}
server
{
    listen 80;
    #listen [::]:80;
    server_name www.ning.com;
    #root  /home/wwwroot/a;
    #include enable-php.conf;
    location / {
        proxy_pass http://model/;
        proxy_set_header Host $proxy_host;
    }
}

【说明】配置项加载在域名配置文件nginx.conf中

权重分配方式

  • 1.轮询

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

upstream  model{
    server www.aaa.cn;
    server www.bbb.cn;
}
  • 2.weight (加权轮询)

指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。 

upstream  model{
    server www.aaa.cn weight=5;
    server www.bbb.cn weight=10;
}

[附加说明]

权重配置时,最好后面服务器的权重>前面服务器的权重,否则后面的服务器分配不均,访问量少,可能导致访问不到。

  • 3.ip_hash

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器。

避免session、文件分片上传等问题。

upstream  model{
    ip_hash;
    server www.aaa.cn;
    server www.bbb.cn;
}

[附加说明]

同一台服务器不建议使用ip_hash,没有作用(真实情况也不会再同一台服务器进行负载均衡,哈哈😁)。

  • 4.fair[第三方]

fair采用的不是内建负载均衡使用的轮换的均衡算法,而是可以根据页面大小、加载时间长短智能的进行负载均衡,响应时间短的优先分配。

upstream  model{
    server www.aaa.cn;
    server www.bbb.cn;
    fair;
}

[附加说明]

需要安装 nginx-upstream-fair 模块

  • 5.url_hash[第三方]

同一个url(同一个资源请求)会到达同一台机器,配合缓存命中来使用。服务器集群,同一个资源多次请求,可能会到达不同的服务器,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。为了使得缓存命中率提高,使用url_hash策略,同一个url(也就是同一个资源请求)会到达同一台机器,一旦缓存资源,再次收到请求,就可以从缓存中读取,既减少了带宽,也减少的下载时间。

配置参数

1.down 表示当前的server暂时不参与负载 。
2.weight 默认为1,weight越大,负载的权重就越大。 
3.max_fails :允许请求失败的次数默认为1。
4.fail_timeout:max_fails次失败后,暂停的时间。 
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。