nginx 无端口重定向

nginx 无端口重定向

我在 Nginx 中遇到了 301 重定向问题。它总是重定向到带有本地端口的 URL。

情况如下:网站通过 Cloudflare 运行,全 https。CF 将 http 请求发送到服务器,varnish 会接受这些请求。然后,Varnish 将请求传递给 nginx,nginx 与 FPM 一起处理其余部分。

Nginx 在端口 8080 上运行。我像平常一样在 Nginx 中创建 301 重定向:

location = /url1 {
  return 301 /url2;
}

然后,Nginx 重定向到 URL,但会添加其运行的原始主机名和端口 (8080)。因此,我在服务器配置中将 port_in_redirect 设置为 off。这只起到了一半的作用。它会将 http URL 重定向到 https(不提及端口 8080)。但它会将 https URL 重定向到 http,循环。

我如何确保不会发生这种情况?我想知道是否有可能知道 Cloudflare 为请求提供服务的方案。

答案1

尝试添加absolute_redirect off到您的位置块

location = /url1 {
  absolute_redirect off;
  return 301 /url2;
}

相关内容