如何在Nginx中使用proxy_pass将子目录传递给不同端口的另一个子目录?
例如,当用户访问http://a.com/dashboard/widgets/clock/images/clock.png
时,Nginx会将其传递给http://a.com:1234/widgets/clock/images/clock.png
。
您可以查看proxy_pass
指令,它可以重写并将请求URI传递给后端。来自Nginx文档:
请求URI按如下方式传递给服务器:
- 如果使用URI指定了proxy_pass指令,那么当请求传递给服务器时,与该位置匹配的规范化请求URI的部分将被指令中指定的URI替换:
location /name/ { proxy_pass http://127.0.0.1/remote/; }
- 如果指定了proxy_pass而没有URI,则请求URI将以与处理原始请求时客户端发送的格式相同的形式传递给服务器,或者在处理更改的URI时传递完整的规范化请求URI:
location /some/path/ { proxy_pass http://127.0.0.1; }
因此,如果您传递给后端的URI相同,减去/dashboard/
部分,您的配置可能如下所示:
# Proxy URIs matching '/dashboard/widgets' to 'localhost:1234/widgets'
location /dashboard/widgets {
proxy_pass http://127.0.0.1:1234/widgets;
}
或者你可以删除widgets
部分代理/dashboard/
下的所有内容到localhost:1234/
。这取决于您希望匹配的具体程度。