轮询(默认)
每个请求按时间顺序逐一分配到不同的服务器,如果服务器 down 掉,能自动剔除。
upstream myserver {
server 192.168.145.136:8080;
server 192.168.145.136:8081;
}
weight
指定轮询权重,weight 值越高访问机率越大,一般用于服务器性能不平衡的情况。
upstream myserver {
server 192.168.145.136 weight=8;
server 192.168.145.135 weight=2;
}
ip_hash
在上述的 轮询
和 weight
都存在一个问题,加入用户在某台服务器登录了,那么该用户第二次请求,会重新转发到一个服务器,可能不再是这个服务器,那么用户的登录状态就消失。
使用 ip_hash
的方式就可以解决这个问题,每个请求按访问 ip 的 hash 通过哈希算法分配服务器,这样每个访客固定访问一个后端服务器,也就解决了 session 共享
的问题。
upstream myserver {
ip_hash;
server 192.168.145.136;
server 192.168.145.135;
}
fair(第三方)
按服务器的响应时间来分配请求,优先分配到响应时间短的服务器。
upstream myserver {
server 192.168.145.136;
server 192.168.145.135;
fair;
}
url_hash(第三方)
按访问的 url 的 hash 结果来分配服务器,使相同的 url 定向到同一个服务器,后端服务器为缓存时比较有效。
upstream myserver {
hash $request_uri;
server 192.168.145.136;
server 192.168.145.135;
}
server 配置
server {
listen 80;
server_name 192.168.145.130;
location /get {
proxy_pass http://myserver;
}
}