nginx
正向代理:
1、由客户端发起。
2、代理服务器 目标服务器明确。
反向代理:
1、反向代理配置在服务端。
2、客户端不知道访问那一台服务器。
3、达到负载均衡,隐藏服务器真正ip地址。
nginx location 路径映射 匹配方式及优先级
server块中根据优先级写,先写优先级高的
Nginx负载均衡算法(Nginx upstream)
1、轮询(默认)
按照请求时间顺序分配不同的后端服务,如果故障机器出现故障,自动剔除。
upstream bakend {
server 192.168.0.1;
server 192.168.0.2;
}
2、weight(轮询权值)
weight的值越大该服务器访问概率越高,主要用于服务器性能不均很的情况,或者仅仅为在主从的情况下设置不同的权值,达到合理的利用主机资源。
upstream bakend {
server 192.168.0.1 weight=10;
server 192.168.0.2 weight=20;
}
3、ip_hash
请就按照哈希算法结果分配,同一个IP固定访问同一个服务器,可以解决动态网页存在的session共享问题。
upstream bakend {
ip_hash;
server 192.168.0.1:8089 weight=10;
server 192.168.0.2:8090 weight=20;
}
4、fair(第三方)
根据页面大小和加载时间长短智能的分配服务器进行负载均衡,也就是根据后端服务器响应时间来动态地分配服务器,响应时间短的优先分配。
注:如果使用这种必须安装upstream_fair模块。
upstream bakend {
server 192.168.0.1:8089 weight=10;
server 192.168.0.2:8090 weight=20;
fair;
}
5、url_bash(三方)
按访问的URL的哈希结果来分配请求,使每个URL定向到一台后端服务器,可以进一步提高后端缓存服务器的效率。Nginx本身不支持url_hash,如果需要这种调度算法,则必须安装Nginx的hash软件包。
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效
注:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法。
upstream bakend {
server 192.168.0.1:8089 weight=10;
server 192.168.0.2:8090 weight=20;
hash $request_uri;
}
upstream状态
down 表示单前的server暂时不参与负载.
weight 默认为1.weight越大,负载的权重就越大。
max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误.
fail_timeout : max_fails次失败后,暂停的时间。
backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
upstream bakend{
ip_hash;
server 192.168.0.1:9090 down;
server 192.168.0.1:8080 weight=2;
server 192.168.0.1:8089;
server 192.168.0.1:8090 backup;
}