利用nginx自带的反向代理以及轮询功能实现应用的负载均衡

Posted Deng0727

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用nginx自带的反向代理以及轮询功能实现应用的负载均衡相关的知识,希望对你有一定的参考价值。

针对中间件部署的应用(war包),可使用nginx自带的反向代理以及轮询功能,实现应用的负载均衡。

一、架构图

 

二、环境准备

准备2套环境,如19.1.0.18:7001,19.1.0.16:7001;环境使用相同的应用包、中间件以及配置文件(如数据库连接、redis),目的是可单独使用任意一套环境。

三、配置

在服务器对应目录下,修改nginx配置文件nginx.conf,具体配置如下:

1、在server节点的同级目录下新增upstream,后加服务名,如例子中的baseserver;服务名可自定义,该服务名会在后续的反向代理中用到;里面的server为中间件节点对应的ip+端口;

2、添加反向代理,在原有server下或新建一个server,添加相关代码;

upstream baseserver{
        #ip_hash; 
        server  19.1.0.18:7001;
        server  19.1.0.16:7001;
    }
    
    server {
        listen       88;
        server_name localhost 19.1.0.18;
        client_max_body_size 300M;
        
        location / {                                                         #“/”表示在本server下,没有匹配上其他location的请求全部转入这里                                       
            proxy_pass http://baseserver;                                    #baseserver为upstream定义的服务名 
            add_header backendIP $upstream_addr;                             #作用是在每个请求的请求头中显示本次请求是轮询的哪个服务器
            add_header backendCode $upstream_status;                         #作用是在每个请求的请求头中显示本次请求的状态
            proxy_set_header        Host $http_host;                         #作用是添加请求头参数
            proxy_set_header        X-Real-IP $remote_addr; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;    
                
        }

    }
四、验证是否成功

访问使用nginx的ip和端口访问系统,如http://19.1.0.18:88/ApprTest/login.do,通过刷新页面的方式查看请求头返回的服务器是否变化。

刷新页面再次查看

每次请求的服务器不一样,说明配置成功。

以上是关于利用nginx自带的反向代理以及轮询功能实现应用的负载均衡的主要内容,如果未能解决你的问题,请参考以下文章

nginx反向代理

Nginx反向代理

Nginx 实践案例:反向代理单台web;反向代理多组web并实现负载均衡

nginx反向代理负载均衡(轮询权重IPHash)

nignx的TCP和UDP调度(nginx反向代理)

利用nginx反向代理功能将http网站改造成https