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

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

我正在使用 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

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

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

  <snip>
}

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

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

答案1

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

有一个线讨论相同的内容,在 NGINX 服务器中,您可以通过在 nginx 配置文件中添加以下字符串来实现相同的目的,如下所示:

if ($http_x_forwarded_proto = "http") { 
  return 301 https://$host$request_uri; 
}

您可以检查一下线也可能会对你有帮助。

答案2

目前,您可以直接从 HTTP(S) 负载平衡执行此操作。Google Cloud 发布了重写和重定向支持(自 2020 年 4 月起)。

请参阅本文以了解如何设置:

关于此功能的更多详细信息:

相关内容