nginx代理配置

今天又接到一个零碎的事,要搭建代理服务,让在现场工程师也能连接到公司的一些资源;正常来说这个弄个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;
   }


   

猜你喜欢

转载自farness.iteye.com/blog/2097949