nginx-负载均衡

upstream testserver {
# server 127.0.0.1:8080 weight=2;
# server 127.0.0.1:8081 weight=1; #多加了此台服务器 weight权限级别
server 127.0.0.1:8080;
server 127.0.0.1:8081; #多加了此台服务器
ip_hash;
}
upstream testserver1 {
server 127.0.0.1:8081;
}

以上 testserver 和 testserver1 配置项为负载均衡配置项和均衡服务器列表

server {
listen 80;
server_name nginx-proxy.cn;
location / {
proxy_pass http://testserver;
index index.html index.htm index.php l.php;
}
}

proxy_pass http://testserver 里的testserver为上边配置项目名称

负载均衡策略

方法说明配置举例注意
轮询默认方式 , 最基本的配置方法,
上面的例子就是轮询的方式,
它是upstream模块默认的负
载均衡默认策略。每个请求会
按时间顺序逐一分配到不同的
后端服务器。
weight权重方式 ,在轮询策略的基
础上指定轮询的几率
upstream bend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}
权重越高分配到需要处理的请求越多。
此策略可以与least_conn和ip_hash结合使用。
此策略比较适合服务器的硬件配置差别比较大的情况。
ip_hash依据ip分配方式, 指定负载
均衡器按照基于客户端IP的
分配方式,这个方法确保了
相同的客户端的请求一直发
送到相同的服务器,以保证
session会话。这样每个访
客都固定访问一个后端服
务器,可以解决session不
能跨服务器的问题。
upstream dynamic {
ip_hash; #访客固定访问一个后端服务器
server localhost:8080 weight=2;
server localhost:8081;
server localhost:8082;
server localhost:8083 max_fails=3 fail_timeout=20s;
}
ip_hash不能与backup同时使用。
此策略适合有状态服务,比如session。
当有服务器需要剔除,必须手动down掉。
least_conn最少连接方式, 把请求转
发给连接数较少的后端服
务器。轮询算法是把请求
平均的转发给各个后端,
使它们的负载大致相同;
但是,有些请求占用的
时间很长,会导致其所
在的后端负载较高。这
种情况下,least_conn这种方式就可以达到更好的负载均衡效果。
upstream dynamic {
least_conn; #请求转发给连接数较少的服务器
server localhost:8080 weight=2;
server localhost:8081;
server localhost:8082 backup;
server localhost:8083 max_fails=3 fail_timeout=20s;
}
此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况。
fair(第三方)响应时间方式, 按照服务
器端的响应时间来分配请
求,响应时间短的优先分配
upstream dynamic {
server localhost:8080; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082; #tomcat 8.5
server localhost:8083; #tomcat 9.0
fair; #实现响应时间短的优先分配
}
url_hash(第三方)依据URL分配方式,按访
问url的hash结果来分配请
求,使每个url定向到同一
个后端服务器,要配合缓存
命中来使用。同一个资源
多次请求,可能会到达不
同的服务器上,导致不必
要的多次下载,缓存命
中率不高,以及一些资
源时间的浪费。而使用
url_hash,可以使得
同一个url(也就是同
一个资源请求)会到
达同一台服务器,
一旦缓存住了资源,再此收到请求,
就可以从缓存中读取。 
upstream dynamic {
hash $request_uri; #实现每个url定向到同一个后端服务器
server localhost:8080; #tomcat 7.0
server localhost:8081; #tomcat 8.0
server localhost:8082; #tomcat 8.5
server localhost:8083; #tomcat 9.0
}

配置项说明

1.down 表示单前的server暂时不参与负载
2.weight 默认为1.weight越大,负载的权重就越大。
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4.fail_timeout:max_fails次失败后,暂停的时间。
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
nginx支持同时设置多组的负载均衡,用来给不用的server来使用。
client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录
location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡