How to you redirect HTTP to HTTPS (GCP Load Balancing)

google-cloud-platformload balancing

I'm playing with GCP Load Balancing and want to redirect HTTP to HTTPS links. But cannot figure out.

My Load Balancing looks like:

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

My webs backend is a simple nginx web server that listens on TCP/80 port. Nginx server configs:

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

  <snip>
}

Now with this GCP Load Balancing setup, I can access both HTTP and HTTPS, tried to configure Nginx to send cleints 301 redirect to HTTPS and it won't work. Too many redirects.

Question is, how can I configure GCP Load Balancing to redirect HTTP to HTTPS properly?

Best Answer

There is feature request submitted to Google product engineering team to support it on GCP HTTP(s) load-balancer. You can track this on Google public issue tracker.

There is a thread discussing the same and in NGINX server you can accomplish the same by adding following string into nginx configuration file like this:

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

You can check this thread as well which may help you.

Related Topic