AWS: Как перенаправить HTTP на HTTPS в App Load Balancer?

У меня есть несколько веб-серверов IIS за балансировщиком нагрузки приложений (ALB). На всех веб-серверах установлен самозаверяющий сертификат SSL , и выполняется перенаправление с HTTP на HTTPS с использованием правильной настройки модуля перезаписи URL:

enter image description here

Если я получаю прямой доступ к этим веб-серверам, HTTP будет перенаправлен на HTTPS.

] Целевая группа использует протокол HTTPS. ALB прослушивает как HTTP, так и HTTPS. Он имеет сертификат SSL на "www.mysite.com".

Однако, когда я пытался получить доступ к ALB по протоколу HTTP, он не перенаправлялся на HTTPS. Теперь, когда серверы правильно перенаправляют, почему не работает ALB?

2
задан 27 September 2017 в 06:03
2 ответа

Теперь можно напрямую выполнить перенаправление в любом правиле ALB, см. Соответствующее объявление AWS .

Чтобы безоговорочно перенаправить все запросы с HTTP на HTTPS, вы должны настроить HTTP-приемник только с правилом / действием по умолчанию для постоянного перенаправления (301) всех запросов с одним и тем же хостом, путем и запросом на HTTPS-порт. (обычно: 443) с протоколом HTTPS: AWS ALB HTTP to HTTPS configuration with permanent redirect

1
ответ дан 3 December 2019 в 12:35

Предполагается, что вы используете 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} enter image description here

Для 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 на веб-сервере, и страница обслуживается.

0
ответ дан 3 December 2019 в 12:35

Теги

Похожие вопросы