码迷,mamicode.com
首页 > 其他好文 > 详细

nginx反向代理

时间:2018-01-06 15:59:26      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:listen   哈希   weight   问题:   相同   out   var   oca   主机   

一、实验实现的目标

    使用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反向代理

标签:listen   哈希   weight   问题:   相同   out   var   oca   主机   

原文地址:http://blog.51cto.com/453412/2058108

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!