实例:
proxy.conf
http://upstream.mxs223.com/
upstream serverStream{
server 172.17.0.3:80;
server 172.17.0.4:80;
}
server{
listen 80;
server_name upstream.mxs223.com;
location /{
proxy_pass http://serverStream;
}
}
1、轮询(weight=1)
默认选项,当weight不指定时,各服务器weight相同,
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
1、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
如果后端服务器down掉,能自动剔除。
比如以下配置,则0.4服务器的访问量为0.3服务器的两倍。
upstream serverStream{
server 172.17.0.3:80 weight=1;
server 172.17.0.4:80 weight=2;
}
2、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session不能跨服务器的问题。
如果后端服务器down掉,要手工down掉
upstream serverStream{
ip_hash;
server 172.17.0.3:80;
server 172.17.0.4:80;
}
3、fair(第三方插件)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream serverStream{
server 172.17.0.3:80;
server 172.17.0.4:80;
fair;
}
4、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法
upstream serverStream {
server 172.17.0.3:80;
server 172.17.0.4:80;
hash $request_uri;
hash_method crc32;
}
1、down 表示单前的server暂时不参与负载
2、weight 权重,默认为1。 weight越大,负载的权重就越大。
3、max_fails 允许请求失败的次数默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误
4、fail_timeout max_fails次失败后,暂停的时间。
5、backup 备用服务器, 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
upstream tel_img_stream {
#ip_hash;
server 192.168.11.68:20201;
server 192.168.11.69:20201 weight=100 down;
server 192.168.11.70:20201 weight=100;
server 192.168.11.71:20201 weight=100 backup;
server 192.168.11.72:20201 weight=100 max_fails=3 fail_timeout=30s;
}
proxy_pass 结尾带/与不带/的区别
http://proxy.mxs223.com:8080/jrfr/index.html
http://proxy.mxs223.com:8080/jrft/index.html
server{
listen 80;
server_name proxy.mxs223.com;
location /jrfr{
proxy_pass http://172.17.0.3;
}
location /jrft{
proxy_pass http://172.17.0.3/;
}
}