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

2013-09-29 11:49:33 +08:00
 t4st
由于众所周知的原因,
想要通过离岸的服务器用 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;
}

但是不起作用,请问应该如何修改?谢谢。
2699 次点击
所在节点    问与答
9 条回复
chenliang0571
2013-09-29 12:14:16 +08:00
log里面有错误吗?
t4st
2013-09-29 12:23:51 +08:00
@chenliang0571 没有哦,我反复刷新 access.log 和 error.log ,都是空的。客户端返回的是 404 错误。
manhere
2013-09-29 12:28:13 +08:00
记得location区里面是可以写 rewrite规则的:
location / {
rewrite "^/proxy/?url=(.+)$" http://$1 break;
}
shiny
2013-09-29 12:37:45 +08:00
location 什么时候可以匹配 Query_String 了?捕获的字符串可以在下文里使用 $1?
闻所未闻……
chenliang0571
2013-09-29 13:29:14 +08:00
我知道这样应该可以。。

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

location / {
proxy_pass http://$arg_url;
}
est
2013-09-29 13:40:37 +08:00
^/proxy/?url=(.*)$

这个正则来看,你试试

http://myserver/proxyurl=http://www.anotherserver/test.css
dallaslu
2013-09-29 15:20:55 +08:00
正则里面的问号是不是应该进行转义?譬如:

^/proxy/\?url=(.*)$
rrfeng
2013-09-29 15:45:15 +08:00
这不是正向代理了么……
t4st
2013-09-29 16:01:50 +08:00
搞定啦~感谢以上回答的各位!~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/84126

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX