nginx正反向代理、负载均衡

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; 
}
原文地址:https://www.cnblogs.com/pengcool/p/15516508.html