Мне настраивали Выравнивание нагрузки HTTP/HTTPS на Google Compute Engine с 2 Глобальными Передающими Правилами (HTTP и HTTPS). Каждое правило указывает на серверную службу с протоколом HTTP.
Я хочу все запросы к http://*
перейти в https://*
.
Поскольку подсистема балансировки нагрузки говорит с серверными службами по HTTP, я не думаю, что могу заставить nginx на серверной службе передавать a обратно 301
.
Я попробовал дюжину маленьких тонких настроек на Google, вычисляют, и они все заканчивают с Google, вычисляют возврат a 502
.
Я уверен, что кто-то еще настроил это прежде. Любые подсказки или указатели в правильном направлении очень ценятся.
У нас есть аналогичная настройка с использованием балансировщика нагрузки HTTP / HTTPS, и нам удалось принудительно настроить HTTPS. Это невозможно напрямую из балансировщика нагрузки, но вы можете настроить его из своей серверной службы. Балансировщик нагрузки Google Cloud установит X-Forwarded-Заголовок Proto http со значением http или https. Вы проверяете этот заголовок в своей серверной службе (в нашем случае Varnish, но это также можно сделать в Nginx), и если значение равно http, вы отправляете обратно 301.
Сегодня я столкнулся с этой проблемой и смог решить ее, используя балансировку нагрузки TCP. Если вам не нужны опции специфического балансировщика нагрузки HTTP/HTTPS, возможно, вы можете использовать TCP Load Balancer (без SSL) для получения трафика как на порт 80, так и на порт 443. Для трафика с порта 80 вы можете отправить обратно 301.
.В настоящее время это можно сделать непосредственно из балансировки нагрузки HTTP(S). Google Cloud выпустил поддержку перезаписи и перенаправления (с апреля 2020 г.).
Прочитайте эту статью, чтобы узнать, как настроить:
https://cloud.google.com/load-balancing/docs/https/setting-up-traffic-management#console Подробнее об этой функции :
https://cloud.google.com/load-balancing/docs/features#routing_and_traffic_management