今天又接到一个零碎的事,要搭建代理服务,让在现场工程师也能连接到公司的一些资源;正常来说这个弄个VPN就ok了,但不知道为什么没这么做,只是在防火墙上做了个端口映射(只有一个端口),防火墙的控制不再手里,申请起来还很麻烦,只好在这个端口上想办法了
以前做web服务反向代理的时候,用的nginx,挺方便的,第一个就想到了它
网络结构如下图
可以看到有3台机器要对外服务,分别是项目管理(http),SVN(https),TFS(windows http)
前2个配置都很简单,如下
location /project {
proxy_pass http://192.168.1.101/project;
}
location /svn {
proxy_pass https://192.168.1.102/svn;
}
TFS的配置就比较郁闷了,虽然他也是http,但是按project配置后,通过代理能够建立连接,但登录总是不过,抓包分析后,发现Visual Studio 直接连接TFS的时候,连接、登录、获取数据,都是在一个TCP里完成的;一旦用了代理就会被拆分成个好几个,虽然每步过程都有,但认证就是不过。
思路就转到如何让nginx保持TCP连接上,参考http://hxl2009.blog.51cto.com/779549/1325150一文后,最后的配置如下
server {
listen 8080;
server_name localhost;
location /project {
proxy_pass http://192.168.1.101/project;
}
location /svn {
proxy_pass https://192.168.1.102/svn;
}
location / {
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_intercept_errors on;
proxy_set_header Host $http_host;
proxy_set_header ORIG_CLIENT_IP $remote_addr;
proxy_pass http://httpd;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
upstream httpd {
server 192.168.1.103:8080;
keepalive 4;
}
nginx代理配置
猜你喜欢
转载自farness.iteye.com/blog/2097949
今日推荐
周排行