标头中带有主机的代理传递会导致循环重定向

标头中带有主机的代理传递会导致循环重定向

用例

我们需要重定向到当前网站(ip1 -https://host.com/路径) 来自一个新服务器 (ip2),该服务器将在根路径下托管另一个网站 (https://host2.com/)。最后,这个最后一个网站将托管为https://host.com/,这意味着我们将在https://host.com/(托管在 ip2 上)以及另一个https://host.com/路径(托管在 ip1 上)

NGINX 在 ip2 服务器上运行。

当前网站仅接受来自 host.com 的请求

当前配置

这就是我们现在在 ip2 服务器上尝试做的事情

location /path/ {
  proxy_pass https://ip1/path;
  proxy_redirect off;
  proxy_set_header Host host.com;
}

如果我们尝试访问https://host2.com/path,配置运行良好。当我们更改 DNS 以将 ip2 设置为 host.com 时,如果我们尝试访问https://host.com/路径,NGINX 正在处理请求,但随后我们有无限的 302 重定向到https://host.com/路径(直到浏览器最终停止该过程)

您知道如何解决这个问题吗?

多谢 !

答案1

我们最终找到了一种配置来解决这个问题:

location /path/ {
  proxy_pass https://ip1/path/;
  proxy_redirect off;
  proxy_set_header Host host.com;
}

注意协议(https)和尾随的斜杠字符。

我们已将 DNS 移至将 host.com 重定向至 ip2,并且一切运行正常!

相关内容