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 简单实现反向代理和负载均衡案例

然后用nginx服务器代理tomcat,

在nginx.conf做如下配置:

Nginx 简单实现反向代理和负载均衡案例

1.在配置文件中加入一个upstream,upstream可以认为是对新增server的管理,我们可以在upstream中增加server并做一些负载均衡的配置。

2.在location中增加一个proxy_pass,顾名思义它就是代理转发,通过location路由规则进入的服务会转发到proxy_pass配置的服务。

测试一下,在浏览器输入80端口的nginx地址:

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大。

上一篇:nginx check健康检查


下一篇:Nginx upstream变量