Nginx代理重定向而不更改URL

时间:2013-09-10 07:44:28

标签: nginx

我的机器上运行了nginx(:80)和上游服务器(:8080)。

  • 我想将所有对/ assets /(*。?)的请求代理到上游/上游/ $ 1位置。
  • 上游服务器将(302)/ upstream / file_id重定向到/real/file/location.ext

这是我的代码:

location /assets/ {
    rewrite ^/assets/(.*) /upstream/$1 break;
    proxy_pass http://127.0.0.1:8000;
}

这似乎有效,但在客户端,我得到了重定向的位置:

http://myserver.com/real/file/location.ext

我想隐藏它以便它保持下去:

http://myserver.com/assets/file_id

这背后的想法是让上游服务器找到真实文件的位置,但让nginx服务文件而不放弃它的真实位置。这甚至可能吗?

1 个答案:

答案 0 :(得分:0)

首先你在proxy_pass中使用8000,但是你提到你的端口是8080。

其次,删除重写行应该做的伎俩,因为你实际上在这里使用重写规则,永远不会到达proxy_pass行。以下内容应该有效:

location /assets/ {
    include proxy_params;
    proxy_pass http://127.0.0.1:8080;
}

还有proxy_rewrite和proxy_redirect命令可以帮助你在nginx内部处理这个上游重定向。

希望有所帮助!