У меня есть работающее приложение на Elastic Beanstalk, и я хотел бы сделать его доступным ТОЛЬКО через HTTPS. Поскольку я хочу, чтобы приложение масштабировалось автоматически, мне нужно настроить HTTPS на уровне Load Balancer, а не на уровне отдельного экземпляра EC2. Я слежу этот учебник о том, как настроить HTTPS с помощью Elastic Beanstalk. Однако, когда я заканчиваю руководство, мой домен никогда не загружается (по http или https), и я получаю тайм-аут сеанса в браузере.
Вот что у меня есть на данный момент:
Я считаю, что именно здесь возникают проблемы. На шаге 4 учебника мне сообщается, что мне нужно обновить мою группу безопасности (очень неоднозначно, какую именно). Итак, я обновляю группу безопасности Load Balancer следующим образом (удаляем HTTP-запросы и поддерживаем только https):
Затем в настройках конфигурации среды Elastic Beanstalk я настроил его так:
(Если я отключу порт прослушивателя, домен никогда не загрузится ни по http, ни по https). С этими настройками, если я перейду в свой домен (например, myapp.com), он продолжит загрузку, пока браузер не отобразит исключение тайм-аута. Если я укажу протокол (например: https://myapp.com) он будет продолжать загрузку, пока браузер не отобразит исключение тайм-аута. Если я перейду по определенной ссылке с указанным протоколом HTTPS (например: https://myapp.com/login.xhtml), затем он загрузится (Примечание: приложение работает нормально, прежде чем пытаться применить SSL; страница приветствия настроена на сервере). Что я делаю не так?
Резюмируем вопрос: Как настроить приложение Elastic Beanstalk для работы ТОЛЬКО по HTTPS?
Желаемый результат: Пользователь вводит домен приложения в свою адресную строку (например, myapp.com), и он переносит их в мое приложение, защищенное с помощью HTTPS (например: https://myapp.com).
Вы не делаете этого, отключая доступ по протоколу http.
Вы делаете это на веб-сервере вашего экземпляра. Когда запрос приходит без X-Forwarded-Proto: https
заголовок, который ELB добавляет, когда входящий запрос поступает через https, ваши веб-серверы должны отправить HTTP/1.1 301 Moved Permanently
перенаправить в браузер, указав Location: https://...
в ответ.
Браузер нового посетителя не может автоматически узнать, что он должен повторить попытку с https, если ваше приложение не сообщит об этом.
Существуют альтернативные, более продвинутые способы сделать это, но они по-прежнему не включают ELB (эластичный балансировщик нагрузки) или EB (эластичный beanstalk) или конфигурацию группы безопасности.