nginx反向代理

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx反向代理相关的知识,希望对你有一定的参考价值。

一、实验实现的目标

    使用nginx实现Web反向代理功能,实现如下功能:

  • 后端Web服务器两台,可以使用httpd实现

  • Nginx采用轮询的方式调用后端Web服务器

  • 两台Web服务器的权重要求设置为不同的值

  • 最大失败次数为1,失败超时时间为30秒


二、方案设计

        使用4台RHEL7虚拟机,其中一台作为Nginx代理服务器,

  该服务器需要配置两块网卡,IP地址分别为192.168.4.102和192.168.2.102,

  两台Web服务器IP地址分别为192.168.2.103和192.168.2.104。

  客户端测试主机IP地址为192.168.4.101


三、实施步骤

   步骤一、部署实施后端Web服务器

     1、部署后端Web1服务器

         yum  -y  install  httpd

         echo "192.168.2.103" > /var/www/html/index.html

          systemctl restart httpd

     2、部署后端Web2服务器,同Web1,只是主页文件不一样而已

  

  步骤二:配置Nginx服务器,添加服务器池,实现反向代理功能

     1、修改/usr/local/nginx/conf/nginx.conf配置文件

            

     upstream webs {                                         //定义一个web集群

            server 192.168.2.103 weight=1 max_fails=1 fail_timeout=30;    //权重为1,失败次数为1,间隔时间为30秒

           server 192.168.2.104 weight=2 max_fails=1 fail_timeout=30;

       }

    server {

            listen 80;

           server_name www.test.com;

           location / {

                  proxy_pass http://webs;         //调用web集群

           }

      }

步骤三、验证

      重启nginx服务,使用客户端测试效果,发现刷新时出现一次web1的页面就会出现两次web2的页面


四、问题:当同一个客户去不停访问上面www.test.com域名时,访问不同的服务器,会影响客户的体验

     怎么解决这个问题呢?可以设置:设置相同客户端访问相同Web服务器,具体操作如下

     

upstream webs {                                        

            ip_hash;                                         //ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上

           server 192.168.2.103 weight=1 max_fails=1 fail_timeout=30;   

           server 192.168.2.104 weight=2 max_fails=1 fail_timeout=30;

       }

   重启nginx服务,然后在不同的客户端上去验证效果

























              

以上是关于nginx反向代理的主要内容,如果未能解决你的问题,请参考以下文章

用nginx反向代理的问题?(详内)

Nginx简单粗暴的反向代理教程

nginx反向代理数据传输能提高数据响应么?

Nginx 最全操作——nginx反向代理(5)

Nginx 如何设置反向代理

nginx反向代理三种模式