我在 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;
}