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

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?

Теперь можно напрямую выполнить перенаправление в любом правиле 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) трафик попадает на порт 443 ALB
iv) заголовок хоста соответствует правилу siteA.com и пересылается целевой группе siteA-target-group
v) siteA-target-group указывает на порт 81 на веб-сервере, и страница обслуживается.