如何将 HTTP 重定向到 HTTPS(GCP 负载平衡)?

Ng *_*Nam 6 load-balancing google-cloud-platform

我正在使用 GCP 负载平衡并希望将 HTTP 重定向到 HTTPS 链接。但是想不通。

我的负载平衡看起来像:

Load balancer name
Front End:
  Protocols     IP             Certificate
  HTTP          x.x.x.x:80     -
  HTTPS         x.x.x.x:443    example-com

Back End: 
  Hosts          Paths        Backend
  example.com    /*           webs-backend
Run Code Online (Sandbox Code Playgroud)

我的 webs 后端是一个简单的 nginx web 服务器,它侦听 TCP/80 端口。Nginx 服务器配置:

server {
  server_name example.com;
  root /var/www/html;

  <snip>
}
Run Code Online (Sandbox Code Playgroud)

现在有了这个 GCP 负载平衡设置,我可以访问 HTTP 和 HTTPS,尝试配置 Nginx 以将客户端 301 重定向发送到 HTTPS,但它不起作用。重定向过多。

问题是,如何配置 GCP 负载平衡以正确将 HTTP 重定向到 HTTPS?

小智 6

向 Google 产品工程团队提交了功能请求,以在 GCP HTTP(s) 负载平衡器上支持它。您可以在 Google 公共问题跟踪器上跟踪此问题。

有一个讨论相同的线程,在 NGINX 服务器中,您可以通过将以下字符串添加到 nginx 配置文件中来完成相同的操作,如下所示:

if ($http_x_forwarded_proto = "http") { 
  return 301 https://$host$request_uri; 
}
Run Code Online (Sandbox Code Playgroud)

您也可以查看此线程,这可能对您有所帮助。