如何在Nginx中使用proxy_pass将子目录传递给不同端口的另一个子目录?
例如,当用户转到http://a.com/dashboard/widgets/clock/images/clock.png
时,Nginx会将其传递给http://a.com:1234/widgets/clock/images/clock.png
。
答案 0 :(得分:0)
您可以查看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/
。这取决于您希望匹配的具体程度。