Digital Ocean Load Balancer http 到 https 使用 301 而不是 307
Digital Ocean Load Balancer http to https with 301 instead of 307
在我的设置中,我有一个 DigitalOcean 负载平衡器,只连接了一个 droplet(目前)运行 nginx。我通过 SSL Termination 使用负载均衡器管理我的 SSL 证书。负载均衡器设置了此转发规则:
端口 80 上的 HTTP -> 端口 80 上的 HTTP
443 端口上的 HTTP2 -> 80 端口上的 HTTP
负载均衡器有一个选项可以将 HTTP 重定向到 HTTPS。但是,如果我使用此选项,它会使用 307 重定向而不是 301。根据 DigitalOcean,这是有意的。有人告诉我,出于 Seo 的原因,它应该使用 301。我试图禁用该选项并使用 nginx 配置进行重定向,但我最终陷入了无限循环。这是我使用的片段:
server {
listen 80;
server_name _;
# $scheme will get the http protocol
# and 301 is best practice for tablet, phone, desktop and seo
return 301 https://$host$request_uri;
}
有谁知道如何正确处理这种情况?任何帮助将不胜感激。
干杯
拉夫
我实际上发现我可以通过添加
来防止循环
if ($http_x_forwarded_proto = "http") {
return 301 https://$host$request_uri;
}
如本 post
中所建议
在我的设置中,我有一个 DigitalOcean 负载平衡器,只连接了一个 droplet(目前)运行 nginx。我通过 SSL Termination 使用负载均衡器管理我的 SSL 证书。负载均衡器设置了此转发规则:
端口 80 上的 HTTP -> 端口 80 上的 HTTP
443 端口上的 HTTP2 -> 80 端口上的 HTTP
负载均衡器有一个选项可以将 HTTP 重定向到 HTTPS。但是,如果我使用此选项,它会使用 307 重定向而不是 301。根据 DigitalOcean,这是有意的。有人告诉我,出于 Seo 的原因,它应该使用 301。我试图禁用该选项并使用 nginx 配置进行重定向,但我最终陷入了无限循环。这是我使用的片段:
server {
listen 80;
server_name _;
# $scheme will get the http protocol
# and 301 is best practice for tablet, phone, desktop and seo
return 301 https://$host$request_uri;
}
有谁知道如何正确处理这种情况?任何帮助将不胜感激。
干杯 拉夫
我实际上发现我可以通过添加
来防止循环if ($http_x_forwarded_proto = "http") {
return 301 https://$host$request_uri;
}
如本 post
中所建议