Nginx 简单实现反向代理和负载均衡案例
反向代理
1.反向代理概述(参考:https://www.cnblogs.com/anruy/p/4989161.html)
反向代理是指以代理服务器(nginx)来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将服务器上得到的结果返回给Internet上请求连接的客户端,此时的代理服务器对外就表现为一个服务器。
通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。
2.反向代理例子
nginx服务器地址:***.13.102.164:80
tomact8.5地址:***.13.102.164:8080
tomact8.0地址:***.13.102.164:8081
服务器启动nginx,浏览器进入80端口,可以看到nginx的主界面:
然后用nginx服务器代理tomcat,
在nginx.conf做如下配置:
1.在配置文件中加入一个upstream,upstream可以认为是对新增server的管理,我们可以在upstream中增加server并做一些负载均衡的配置。
2.在location中增加一个proxy_pass,顾名思义它就是代理转发,通过location路由规则进入的服务会转发到proxy_pass配置的服务。
测试一下,在浏览器输入80端口的nginx地址:
可以看到他不再进入nginx主页,而进入它代理的tomcat8.5服务器。
3.简单实现负载均衡
负载均衡它是通过分发多个客户端的请求,到多个服务器的方式来缓解服务器端的压力。
upstream
upstream中可以配置多个代理服务器,并设置分发到各服务器的策略,默认的策略是轮询,并且如果其中有一个down掉,会自动将它剔除。
常用的负载均衡策略有4种:配置权重(weight),访问ip(ip_hash),fair.
1)配置权重就是设置每个服务器的轮询几率,例:
upstream tomcatserver1 { server 106.13.102.164:8080 weight=1; server 106.13.102.164:8081 weight=5; }
这样客户端访问到8081端口的比例比8080端口的比例大5倍。
2)根据访问ip的hash算法结果来分配,这样保证每个ip访问到的都是固定server(这样也不会存在session共享问题),例:
upstream tomcatserver1 { ip_hash; server 106.13.102.164:8080; server 106.13.102.164:8081 ; }
3)fair(按照服务器的相应时间)
upstream tomcatserver1 { fair; server 106.13.102.164:8080; server 106.13.102.164:8081 ; }
这样一个简单的负载均衡案例就配置完成。
可以用权重方案测试一下,通过配置文件重启nginx,不停刷新浏览器,可以看到进入8081端口的几率比8080大。