Nginx代理重定向而不更改url
我有一个nginx(:80)和一个上游服务器(:8080)在我的机器上运行Nginx代理重定向而不更改url,nginx,Nginx,我有一个nginx(:80)和一个上游服务器(:8080)在我的机器上运行 我想将所有对/assets/(*.?)的请求代理到上游的/upstream/$1位置 上游服务器将(302)/upstream/file_id重定向到/real/file/location.ext 这是我的密码: location /assets/ { rewrite ^/assets/(.*) /upstream/$1 break; proxy_pass http://127.0.0.1:8000;
- 我想将所有对/assets/(*.?)的请求代理到上游的/upstream/$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在不泄露其真实位置的情况下提供文件。这可能吗?首先,您在proxy_pass中使用8000,但您提到的端口是8080 第二,删除重写行应该可以做到这一点,因为您实际上在这里使用重写规则,并且永远不会到达代理传递行。类似于以下的方法应该可以工作:
location /assets/ {
include proxy_params;
proxy_pass http://127.0.0.1:8080;
}
还有proxy_rewrite和proxy_redirect命令,可以帮助您在nginx内部处理这个上游重定向
希望有帮助