如何设置proxy_pass得到想要的地址?

How to set the proxy_pass to get the desired address?

我一直在努力为我们的用例设置 Nginx。

当我使用以下配置设置 Nginx 时:

location /dep-core {
    proxy_pass http://node-server:7070/;
}

并使用以下端点调用服务器: <END-POINT>/dep-core/api/login

呼叫被重定向到 <ADDRESS-AFTER-RESOLUTION>//api/login 有两个前导 //s.

当我在 7070 之后删除 proxy_pass 中的尾随 / 时:

location /dep-core {
    proxy_pass http://node-server:7070;
}

呼叫被重定向到 <ADDRESS-AFTER-RESOLUTION>/dep-core/api/login 附加了前导 /dep-core。

我希望我的电话重定向到: <ADDRESS-AFTER-RESOLUTION>/api/login 实现这一目标的标准方法是什么?

为了从 /dep-core/foo/foo 的正确翻译,location 指令需要尾随 /.

例如:

location /dep-core/ { 
    proxy_pass http://node-server:7070/; 
}

详情见this document


要将 /dep-core 转换为 /,您可以在问题的第二部分使用带有巧妙正则表达式的 rewrite...break。但一个简单的解决方案是为该单一边缘情况添加精确匹配 location

例如:

location = /dep-core {
    rewrite ^ $uri/ last;
}
location /dep-core/ { 
    proxy_pass http://node-server:7070/; 
}