V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
t4st
V2EX  ›  问与答

关于配置 nginx 的反向代理获取其他服务器上的文件。

  •  
  •   t4st · 2013 年 9 月 29 日 · 3091 次点击
    这是一个创建于 4487 天前的主题,其中的信息可能已经有所发展或是发生改变。
    由于众所周知的原因,
    想要通过离岸的服务器用 nginx 反向代理达到获取墙外文件,
    但是配置总是失败。

    例如:
    访问 http://myserver/proxy/?url=http%3A%2F%2Fwww.anotherserver%2Ftest.css
    nginx 服务器反代 http://www.anotherserver/test.css 并返回给客户端。

    我是这样配置 nginx 的:

    location ~^/proxy/?url=(.*)$ {
    proxy_pass http://$1;
    proxy_redirect off;
    proxy_max_temp_file_size 0;
    }

    但是不起作用,请问应该如何修改?谢谢。
    9 条回复    1970-01-01 08:00:00 +08:00
    chenliang0571
        1
    chenliang0571  
       2013 年 9 月 29 日   ❤️ 1
    log里面有错误吗?
    t4st
        2
    t4st  
    OP
       2013 年 9 月 29 日
    @chenliang0571 没有哦,我反复刷新 access.log 和 error.log ,都是空的。客户端返回的是 404 错误。
    manhere
        3
    manhere  
       2013 年 9 月 29 日   ❤️ 1
    记得location区里面是可以写 rewrite规则的:
    location / {
    rewrite "^/proxy/?url=(.+)$" http://$1 break;
    }
    shiny
        4
    shiny  
    PRO
       2013 年 9 月 29 日
    location 什么时候可以匹配 Query_String 了?捕获的字符串可以在下文里使用 $1?
    闻所未闻……
    chenliang0571
        5
    chenliang0571  
       2013 年 9 月 29 日   ❤️ 1
    我知道这样应该可以。。

    http://myserver/test.css?url=www.anotherserver

    location / {
    proxy_pass http://$arg_url;
    }
    est
        6
    est  
       2013 年 9 月 29 日   ❤️ 1
    ^/proxy/?url=(.*)$

    这个正则来看,你试试

    http://myserver/proxyurl=http://www.anotherserver/test.css
    dallaslu
        7
    dallaslu  
       2013 年 9 月 29 日   ❤️ 1
    正则里面的问号是不是应该进行转义?譬如:

    ^/proxy/\?url=(.*)$
    rrfeng
        8
    rrfeng  
       2013 年 9 月 29 日
    这不是正向代理了么……
    t4st
        9
    t4st  
    OP
       2013 年 9 月 29 日
    搞定啦~感谢以上回答的各位!~
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1009 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:10 · PVG 07:10 · LAX 15:10 · JFK 18:10
    ♥ Do have faith in what you're doing.