每次修改完nginx.conf都得重新启动nginx。
1.轮询(默认)
注意:这里的轮询并不是每个请求轮流分配到不同的后端服务器,与ip_hash类似,但是按照访问url的hash结果来分配请求,使得每个url定向到同一个后端服务器,主要应用于后端服务器为缓存时的场景下。如果后端服务器down掉,将自动剔除
upstream backserver {
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
2.权重
每个请求按一定比例分发到不同的后端服务器,weight值越大访问的比例越大,用于后端服务器性能不均的情况(下面这个是7次请求随机5次分配到端口为8080的tomcat,2次到端口8081的tomcat)
upstream backserver {
server 127.0.0.1:8080 weight=5;
server 127.0.0.1:8081 weight=2;
}
3.ip_hash
ip_hash也叫IP绑定,每个请求按访问ip的hash值分配,这样每个访问客户端会固定访问一个后端服务器,可以解决会话Session丢失的问题(这样虽然能够解决session问题但是ip_hash不是使用cookie在服务端和客户端传递sessionID,另外如果访问的结果全是1那么也会造成服务器压力大,springSession来解决这个问题)
如图
算法:hash("124.207.55.82") % 2 = 0或1
upstream backserver {
ip_hash;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}
4.最少连接
web请求会被转发到连接数最少的服务器上
upstream backserver {
least_conn;
server 127.0.0.1:8080;
server 127.0.0.1:8081;
}