更有效的进行前后台联调-让同一域名上的不同cgi访问不同的ip
Published on 八月 18, 2011
在日常的前后台联调中,我们都习惯用host的方式来使某个域名的cgi都访问测试环境,然而这有一个显而易见的问题:
如果一个域名下有十几个CGI,而这次提测的只有其中的一个,那么要想整个环境可用,你除了要保证这个CGI可用之外,和你完全无关的十几个CGI也要全部调通。
很纠结,不是吗?
其实我们有更好的方式,那就是用反向代理,我们可以用nginx来实现。
以 appsupport.qq.com 这个域名举例,比如本次提测的cgi路径是:
/cgi-bin/appstage/send_topic.cgi
这个cgi要访问测试环境: 172.16.197.186;而这个域名上的其他cgi都要访问正式的外网环境(如10.137.148.124)。
到http://nginx.org/en/download.html下载windows版本的nginx,解压到C盘,然后修改他的nginx.conf文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | #测试环境 upstream test_env { server 10.6.207.119; } #预发布环境 upstream pre_env { server 172.16.197.186; } #appsupport外网环境 upstream appsupport_release_env { server 10.137.148.124; } server { listen 80; server_name appsupport.qq.com; #不写写这两行的话,CGI取HTTP_HOST,会取到upstream的名字 server_name_in_redirect off; proxy_set_header Host $host; location ~ /cgi-bin/appstage/send_topic.cgi { proxy_pass http://pre_env; } location / { proxy_pass http://appsupport_release_env; } } |
双击执行nginx.exe;如果要停止,可以在命令行下执行:
1 | nginx.exe -s stop |
然后修改你的本机host如下:
1 | 127.0.0.1 appsupport.qq.com |
这样,在浏览器中直接输入url,ngx会自动根据url路径来选择访问的ip,如此岂不快哉!
希望这个方法能够帮助到大家~~~
原创文章,版权所有。转载请注明:转载自Vimer的程序世界 [ http://www.vimer.cn ]
本文链接地址: http://www.vimer.cn/?p=2334
这个火狐的 Redirector 插件似乎也可以做到。privoxy 代理应该也可以。
[回复]
Dante 回复:
八月 19th, 2011 at 12:01 上午
额。。果然是有这种插件的。。。
不过大爱nginx啊,用nginx也挺好,哈哈
[回复]
我仿佛在彷徨 直到看到你这篇文章
[回复]
正好遇到这个问题你就给搞定了,谢谢!
[回复]
睡了吗?能不能和我联系下。我的邮箱ceo@moical.com。找你有事。或者加QQ:226547633。谢谢了,等你消息。
[回复]