在 Google Compute Engine 上使用 HTTP(S) 负载平衡器时,将所有 HTTP 流量重定向到 HTTPS

Rya*_*key 19 load-balancing google-compute-engine

我在带有 2 个全局转发规则(HTTP 和 HTTPS)的 Google Compute Engine 上设置了 HTTP/HTTPS 负载平衡。每个规则指向一个使用 HTTP 协议的后端服务。

我希望所有请求http://*都转到https://*.

当负载平衡器通过 HTTP 与后端服务通信时,我认为我无法在后端服务上使用 nginx 将301.

我在谷歌计算上尝试了十几个小的调整,他们最终都以谷歌计算返回一个502.

我敢肯定其他人之前已经设置了这个。任何正确方向的提示或指示都非常感谢。

小智 20

我们使用 HTTP / HTTPS 负载平衡器进行了类似的设置,我们设法强制使用 HTTPS。无法直接从负载均衡器中进行设置,但您可以从后端服务中进行设置。GCP 负载平衡器将使用值 http 或 https 设置 X-Forwarded-Proto http 标头。您在后端服务中检查此标头(在我们的示例中为 Varnish,但也可以在 Nginx 中完成),如果值为 http,则发送回 301。

  • 谢谢!为了后代:`if ($http_x_forwarded_proto = "http") {` `return 301 https://$host$request_uri;` `}` (8认同)
  • 我不同意 Vikram,您必须将 301 用于 SEO 目的。如果您返回 4xx 系列代码,您的 pagerank 将不会从指向旧 http 的链接流向 https。301 是预期的代码,至少如果您关心网站上的 SEO。 (3认同)