求一个反向代理的写法,重写 URL

2015-12-25 17:47:49 +08:00
 flyingnn
server backend: http://backend/a.html

想实现的方法是: 访问 http://a.com/test/a.html 反代到 http://backend/a.html

location /test/(.*) {
proxy_pass http://backend/$1;
}

location /test/ {
proxy_pass http://backend;
}

upstream backend{
server backend;
}

目前这样写是不行的,怎么才能实现呢?
4177 次点击
所在节点    NGINX
5 条回复
just1
2015-12-25 18:15:57 +08:00
location ^~ /test/ {
proxy_pass http://backend/;
}
flyingnn
2015-12-26 00:06:13 +08:00
@just1 试了,不行,还是以 http://backend/test/a.html 访问。
shajiquan
2015-12-26 02:31:29 +08:00
你要先在你这边重写 url ,再请求过去。

upstream test_upstream{
# server wiki.shajiquan.com;
server 127.0.0.1:9801;
}

server {
listen 9101;
location /test/ {
rewrite /test/(.+)$ /$1 break;
proxy_pass http://test_upstream ;
proxy_redirect off;
}
}
lekai63
2015-12-26 11:56:01 +08:00
楼主参考这篇吧。
https://segmentfault.com/a/1190000000406581

server {

listen 80;
server_name backednd;
root /path/to/www/root; #也可省略

location / {
rewrite /(.*) /test/$1 break;
proxy_pass https://a.com/;
}
}
flyingnn
2015-12-28 09:46:07 +08:00
@shajiquan
@lekai63
参考两位的方法,已经 OK ,非常感谢!

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

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

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

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

© 2021 V2EX