У меня есть эластичный балансировщик нагрузки с 2 открытыми портами, 80 и 443. На 443 есть SSL. и 80, и 443 перенаправляются на порт 80 внутреннего сервера.
Проблема в том, что я хочу запускать свой сайт только через порт 443 (SSL включен) и никогда не использовать открытый текст. теперь я не уверен, как мне нужно будет организовать ELB и порты на сервере, чтобы при поступлении запроса на порт 80 он всегда перенаправлялся на порт 443.
В приведенном выше случае есть вид перенаправления, поскольку я поставил правило REWIRTE для перенаправления на 443 с 80 в apache.
Любое решение для этого?
Позвольте мне сначала сформулировать проблему, которую вы пытаетесь решить, чтобы понять, правильно ли я ее понял: вы хотите, чтобы весь пользовательский трафик, проходящий через ELB и поступающий в экземпляры EC2, происходил через HTTPS.
Если это так, краткий ответ - да, но это потребует некоторой работы над AMI
и ELB
.
SSL
сертификат к экземпляру.SSL
подключение в Apache. В качестве первого шага установите mod_ssl
с помощью:yum установить mod_ssl
HTTPS
слушатель Apache на port 443
.IAM
. Для получения дополнительной информации см. Это.ELB
используя ELB
командная строка.ELB
который слушает трафик на port 443
и направляет трафик на port 443
на экземплярах, использующих сертификат, который вы загрузили в IAM
.(Необязательно) Вы можете использовать аутентификацию сертификата для аутентификации трафика между ELB
и экземпляры EC2. Вам понадобится открытый ключ сертификата, который вы используете в хранилище ключей экземпляра EC2.
Примечание. Вышеупомянутые шаги позволяют прекратить SSL
подключения в экземплярах EC2. Полностью выключить невозможно port 80
на экземплярах, поскольку Elastic Beanstalk взаимодействует с Host Manager, используя этот порт. Вы можете выключить port 80
на ELB
если вы хотите это сделать.
источник: ВОТ
Есть два способа решить эту проблему.
1) Пусть apache обслуживает как порт 80, так и порт 443, с перенаправлением ELB на эти порты соответственно.
2) Обработайте это на уровне приложения. Сделайте ваше приложение принудительным https: // перед рендерингом любых страниц.