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

时间:2017-12-07 06:21:56

标签: nginx reverse-proxy proxypass

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

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

1 个答案:

答案 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/。这取决于您希望匹配的具体程度。