Назад | Перейти на главную страницу

Как вы можете перенаправить 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

Моя веб-серверная часть - это простой веб-сервер nginx, который прослушивает порт TCP / 80. Конфигурации сервера Nginx:

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

  <snip>
}

Теперь с этой настройкой балансировки нагрузки GCP я могу получить доступ как к HTTP, так и по HTTPS, попытался настроить Nginx для отправки переадресации клинтов 301 на HTTPS, и это не сработает. Слишком много перенаправлений.

Вопрос в том, как мне настроить балансировку нагрузки GCP для правильного перенаправления HTTP на HTTPS?

В группу разработчиков продукта Google отправлен запрос функции для поддержки балансировщика нагрузки GCP HTTP (s). Вы можете отслеживать это в публичном выпуске Google трекер.

Eсть нить обсуждая то же самое и на сервере NGINX, вы можете сделать то же самое, добавив следующую строку в файл конфигурации nginx следующим образом:

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

Вы можете это проверить нить также, что может вам помочь.

В настоящее время вы можете сделать это прямо из HTTP (S) Load Balancing. В Google Cloud появилась поддержка Rewrites и Redirects (с апреля 2020 года).

См. Эту статью, чтобы узнать, как настроить:

Подробнее об этой функции: