V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
Niphor
V2EX  ›  NGINX

nginx 能配置通过一个代理么?

  •  
  •   Niphor ·
    niphor · 2015-03-25 14:49:53 +08:00 · 2081 次点击
    这是一个创建于 3526 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我知道这个需求感觉上来说:有点奇葩...

    公司开发的网页版本有很多,而且 域名还是一样的
    有的还要通过一个公司的特定HTTP代理才能访问,导致查看不同版本时还要不停换代理,非常麻烦。

    有的同事连虚拟机都用起来了...

    翻了半天nginx文档,没找到相关的资料

    实际试了下proxy_pass,请求的URI不对,也没法改

    公司HTTP代理用的是Squid

    因为开发是在win平台,也没法编译各种nginx插件...

    想问下,这需求有方案么?nginx不行的话,有其它工具行么?

    11 条回复    2015-03-26 17:04:59 +08:00
    ryd994
        1
    ryd994  
       2015-03-25 15:08:43 +08:00
    proxy_pass 代理ip,同时set_header设置Host为域名
    一般这种测试需求应该用hosts,或者本地dnsmaq
    最好让后端的人给你们开放测试端口,限制内网连接
    Niphor
        2
    Niphor  
    OP
       2015-03-25 15:41:04 +08:00
    我一开始是这样配的
    ```
    sub_filter real.cn demo.cn;
    sub_filter_once off;
    sub_filter_types *;
    location / {
    proxy_pass http://xxx.xxx.xxx.xxx:8080;
    proxy_set_header Host image.real.cn;
    proxy_set_header X-Real-IP 我的IP;
    proxy_set_header X-Forwarded-For 我的IP;
    }
    ```

    但是没用,squid会报:
    ```
    The following error was encountered while trying to retrieve the URL: /
    Invalid URL
    ```

    抓包发现nginx proxy_pass请求是
    ```
    GET / HTTP/1.1
    ```
    所以报错了,但是$request_uri又改不了...


    主要是开发,测试,线上测试,正式等等几个版本域名都用的一样的,用host要看其它版本就要不停切换host,非常麻烦....
    Niphor
        3
    Niphor  
    OP
       2015-03-25 15:41:25 +08:00
    ryd994
        4
    ryd994  
       2015-03-26 02:41:42 +08:00
    @Niphor
    invalid url只能让管理代理服务器的人给你们加intercept参数,nginx自己搞不定

    另外ie的代理设置可以通过修改注册表,你保存几个reg文件,导入就行
    chrome/firefox都可以插件切换
    其实对改hosts可访问的服务器也可以通过设置代理为那台服务器访问,结合pac的话更方便

    切换hosts有什么麻烦的,加个#保存一下的事
    Niphor
        5
    Niphor  
    OP
       2015-03-26 09:11:39 +08:00 via iPhone
    @ryd994

    主要是想如果可以反代,我就一劳永逸了,还能直接开不同版本对比...

    实在不行,我也只能切换host了
    Niphor
        6
    Niphor  
    OP
       2015-03-26 09:17:13 +08:00 via iPhone
    @ryd994 哦错了,是用插件切换代理…
    oott123
        7
    oott123  
       2015-03-26 12:51:12 +08:00 via Android
    其实我觉得 PAC 不就挺好的么…
    Niphor
        8
    Niphor  
    OP
       2015-03-26 13:26:37 +08:00
    @oott123

    比如我3个版本,域名都是 demo.cn,还不能改,这个pac我怎么写?
    Niphor
        9
    Niphor  
    OP
       2015-03-26 16:16:38 +08:00
    今天看了半天squid,好像也不好搞

    曲线救国了一下,装了个Proxifier,多开了个nginx专门穿代理跑反代...比写代码简单点


    此时我已是泪流满面
    oott123
        10
    oott123  
       2015-03-26 16:55:15 +08:00
    匹配不同的url?比如 http://demo.cn/v1/xxxx 这样的……
    Niphor
        11
    Niphor  
    OP
       2015-03-26 17:04:59 +08:00
    @oott123
    不行的,比如静态文件地址 static.demo.cn,是在项目配置文件里面写死的,文件是md5 hash做名字,只用pac,我没法区分的

    我们不带v1 v2这样的二级目录...

    泪流满面
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5371 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:30 · PVG 17:30 · LAX 01:30 · JFK 04:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.