如何使用Nginx proxy_pass将子目录传递给不同端口的另一个子目录?

问题描述 投票:1回答:1

如何在Nginx中使用proxy_pass将子目录传递给不同端口的另一个子目录?

例如,当用户访问http://a.com/dashboard/widgets/clock/images/clock.png时,Nginx会将其传递给http://a.com:1234/widgets/clock/images/clock.png

nginx reverse-proxy proxypass
1个回答
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/。这取决于您希望匹配的具体程度。

© www.soinside.com 2019 - 2024. All rights reserved.