如何设置proxy_pass以获取所需的地址?

时间:2018-10-30 09:36:35

标签: nginx reverse-proxy url-redirection nginx-location nginx-reverse-proxy

我一直在努力为我们的用例设置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 实现这一目标的标准方法是什么?

1 个答案:

答案 0 :(得分:0)

要从/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/; 
}