同一个域名指向不同IP,巧用nginx解决

2017-11-02  江永道 

现有如下域名需要绑定,才能进行测试

edu.test.com/lab 前端应用 部署在A机器 112.22.33.44

edu.test.com/labadmin 后端应用 部署在B机器 112.22.33.45

按我们以前思路,需要测试,都是直接改host文件,例如:


112.22.33.44 edu.test.com 
或
112.22.33.45 edu.test.com 

但上面两个是不能同时存在,不然只会有一个生效,由于业务特殊性,不能用IP直接测试,还得用域名

假设我们就采用配置host的方法达到我们的目的

我们需要在访问前端应用时,配置前端host,同时我们需要把后端应用host注释掉

112.22.33.44 edu.test.com 
#112.22.33.45 edu.test.com

接下来浏览器访问  edu.test.com/lab


同理,我们需要访问后端应用时,配置后端host,同时我们需要把前端应用host注释掉

#112.22.33.44 edu.test.com
112.22.33.45 edu.test.com

接下来浏览器访问  edu.test.com/labadmin


以上方式单独测试前端应用或者后端应用时非常方便,但是前端和后端分不开,一些数据的交互需要来回访问,这个时候用这种方式就非常麻烦了 ,

除非另一个测试人员和你一起测试,一个前端,一个后端,需要干嘛相互通知一声就好了


我要介绍的就是通过nginx来解决此问题,此思路来自我的开发同事何丽彬童鞋,在此掌声送给他

上面介绍到的配置host注释掉不需要了,我们配置一个新的host

127.0.0.1 edu.test.com

我的是mac系统,我的nginx配置文件路径是

/usr/local/etc/nginx/nginx.conf

配置nginx转发规则,

server { 
    listen 80; server_name edu.test.com; 
    location /lab {
     proxy_pass http://112.22.33.44/lab; 
}
     location /labadmin { 
        proxy_pass http://112.22.33.45/labadmin;
    }
}

此处我们用到的是80端口,需要root用户权限才能启动,需要注意的是此端口监听的IP必须是

0.0.0.0 或者是127.0.0.1 ,当然这个不是固定的,需要和host配置保持一致

$ sudo /usr/local/bin/nginx
或者已运行情况下重新载入
$ sudo /usr/local/bin/nginx -s reload

接下来,我们即可以用浏览器访问

http://edu.test.com/lab

又可以访问

http://edu.test.com/labadmin


首先,我们配置了本地host,

127.0.0.1 edu.test.com

edu.test.com 指向了本地127.0.0.1 ,nginx监听80端口


/lab 开头访问的,暂且就叫开头吧,这个是匹配规则 访问的都会指向http://112.22.33.44/lab;

/labadmin 开头访问的,暂且就叫开头吧,这个是匹配规则 访问的都会指向 http://112.22.33.45/labadmin;


大功告成,顺利测试,完美上线,此处域名及IP都是假设数据,但是真实数据是我已经验证过的

这是个好的思路好的经验,并没有让大家学到什么高深的内容

170°|1700 人阅读|0 条评论
登录 后发表评论