Nginx服务器将代理通过到外部托管服务时返回308状态码

我正在尝试将我的nginx服务器端点之一代理通过到一个外部服务,该服务会将调用重定向到其中的另一个服务。 我的配置如下所示

location = /proxy/live {
        proxy_pass <外部服务ip:端口>/live;
        proxy_pass_request_body on;
    }

在外部服务中,**/live** 端点重定向到无法被我的nginx服务器识别的另一个服务。通过上述配置,当尝试访问 /proxy/live 端点时,我收到 308 错误代码(重定向问题)。我该如何解决这个问题并使得代理_pass调用通过外部服务直到最终服务。

点赞
用户5962802
用户5962802

如果proxy_pass指令的URL参数以斜杠结尾,那么位置路径不会添加到这个URL中。然而,如果URL没有以斜杠结尾,则在传递到上游时会将位置路径添加到此URL中。

这从nginX文档中并不十分清晰,他们只是将proxy_pass指称为“带URI”或“不带URI”:

  • 如果在proxy_pass指令中指定了URI,则将请求传递到服务器时,与定位相匹配的规范请求URI部分将被指令中指定的URI替换:
location /name/ {
    proxy_pass http://127.0.0.1/remote/;
}
  • 如果未指定URI,则请求URI以与客户端在处理原始请求时发送的形式传递给服务器,或处理更改后的URI时传递完整的标准请求URI:
location /some/path/ {
    proxy_pass http://127.0.0.1;
}
2020-07-28 09:58:39