AWS: Как перенаправить HTTP на HTTPS в App Load Balancer?
У меня есть несколько веб-серверов IIS за балансировщиком нагрузки приложений (ALB). На всех веб-серверах установлен самоподписанный SSL-сертификат, и они перенаправляются с HTTP на HTTPS с помощью правильно настроенного модуля перезаписи URL:
Если я получу прямой доступ к этим веб-серверам, HTTP будет перенаправлен на HTTPS.
Протокол, используемый целевой группой, - HTTPS. ALB прослушивает как HTTP, так и HTTPS. Он имеет сертификат SSL на "www.mysite.com".
Однако, когда я попытался получить доступ к ALB, используя HTTP, он не перенаправлялся на HTTPS. Теперь, когда серверы перенаправляют правильно, почему не ALB?
2 ответа
Теперь можно напрямую выполнить перенаправление в любом правиле ALB, см. Соответствующее объявление AWS.
Чтобы безоговорочно перенаправить все запросы с HTTP на HTTPS, необходимо настроить прослушиватель HTTP только с правилом / действием по умолчанию для постоянного перенаправления (301) всех запросов с одним и тем же хостом, путем и запросом на порт HTTPS (обычно: 443) с протокол HTTPS:
Предполагая, что вы используете Microsoft Windows в экземпляре EC2 и используете IIS для настройки двух веб-сайтов, siteA и siteB. Настройте siteA для привязки через порт 81, а siteB для привязки через порт 82.
ШАГ 1:
В консоли AWS выберите "Целевые группы" в разделе "Балансировка нагрузки". Создайте две целевые группы:
1. siteA-target-group с идентификатором вашего веб-сервера и портом 81
2. siteB-target-group с идентификатором вашего веб-сервера и портом 82
Примечание: вы можете добавить больше экземпляров веб-сервера в целевую группу для балансировки нагрузки и восстановления после отказа.
ШАГ 2:
В AWS ALB есть два прослушивателя, один для порта 80 и один для порта 443.
Для HTTP (80) добавьте 2 правила:
1. если хост - siteA.com, перенаправьте на https://#{host}:443/#{path}?#{query}
2. если хост - siteB.com, перенаправьте на https://#{host}:443/#{path}?#{query}
Для HTTPS (443) добавьте 2 правила:
1. если хостом является siteA.com, перешлите на siteA-target-group
2. если хост - siteB.com, перешлите на siteB-target-group
ШАГ 3:
У вашего DNS-провайдера установите CNAME для siteA.com, чтобы он указывал на DNS-имя ALB. Аналогичным образом настройте CNAME для siteB.com.
После завершения вышеуказанной настройки проверьте подключение к http://sitea.com/ или http://siteb.com/.
i) трафик достигает порта 80 ALB
ii) заголовок узла соответствует правилу "siteA.com" и перенаправляет трафик на порт 443
iii) трафик попадает в порт ALB 443
iv) заголовок хоста соответствует правилу "siteA.com" и пересылается в целевую группу siteA-target-group
v) siteA-target-group указывает на порт 81 на веб-сервере, и страница обслуживается.