Я хочу перенаправить весь HTTP-запрос на https-запрос на ELB . У меня два экземпляра EC2. Я использую nginx для сервера. Я безуспешно пытался переписать файлы конфигурации nginx. Я хотел бы получить совет по этому поводу.
redirect
nginx
amazon-ec2
https
amazon-elb
Амит Бадхека
источник
источник
Ответы:
Балансировщики нагрузки приложений AWS теперь поддерживают перенаправление с HTTP на HTTPS.
Чтобы включить это в консоли, сделайте следующее:
То же самое можно сделать с помощью интерфейса командной строки, как описано здесь .
Это также можно сделать в Cloudformation, где вам нужно настроить объект Listener следующим образом:
Если вы по-прежнему используете классические балансировщики нагрузки, используйте одну из конфигураций NGINX, описанных другими.
источник
instances
вкладки нет )ELB устанавливает
X-Forwarded-Proto
заголовок, вы можете использовать его, чтобы определить, был ли исходный запрос на HTTP, и затем перенаправить на HTTPS.Вы можете попробовать это в своей
server
конфигурации:Взгляните на документацию ELB .
источник
nginx
конфигурации, но принцип применим к любому веб-серверу.У меня была такая же проблема, в моей ситуации HTTPS полностью обрабатывался ELB, и я не знал свой исходный домен заранее, поэтому я сделал что-то вроде:
И затем, конечно, указываем ELB https на порт 80 экземпляра, а затем маршрут http на порт 81 экземпляра.
источник
Amazon Elastic Load Balancer (ELB) поддерживает заголовок HTTP под названием X-FORWARDED-PROTO. Все запросы HTTPS, проходящие через ELB, будут иметь значение X-FORWARDED-PROTO, равное «HTTPS». Для HTTP-запросов вы можете принудительно использовать HTTPS, добавив следующее простое правило перезаписи. У меня работает нормально!
Apache
Вы можете добавить в файл .htaccess следующие строки:
Или, если вы используете vhost.conf для управления несколькими доменами на одном и том же веб-сервере EC2, вы можете добавить следующее в vhost.conf (добавить его в домен, для которого вы хотите использовать https):
IIS
Установите модуль IIS Url-Rewrite, используя графический интерфейс конфигурации, добавьте следующие параметры:
Подробнее здесь
источник
RewriteCond %{HTTP:X-Forwarded-Proto} !(https|^$)
Приведенные выше решения htaccess привели к сбою проверки работоспособности ELB. У меня были проблемы с поиском решения, пока я не обнаружил в Интернете статью, в которой у кого-то были те же проблемы, что и у меня. Его решение заключалось в том, чтобы вместо этого добавить это в начало файла htaccess:
Источник: перенаправление HTTP на HTTPS с помощью AWS и ELB
источник
Возможно, это не то решение, которое вы ищете, но другим вариантом может быть использование AWS CloudFront в дополнение к ELB. CloudFront дает возможность перенаправить весь входящий HTTP-трафик на HTTPS.
источник
У меня была странная проблема с конфигурацией nginx и ELB. Моя установка включала 3 разных сервиса внутри одного nginx за ELB. И у меня была проблема со смешанным содержимым: когда ваш запрос к ELB - https, но только внутри ELB http, а сервер создает относительный путь к статическому с помощью http, поэтому браузер не работает с проблемой «смешанного содержимого». И я должен создать решение для работы http / https без каких-либо перенаправлений.
Конфигурация находится в
nginx/conf.d/
папке:Это означает, что мы будем знать, что такое настоящий клиентский протокол. Как видите, он у нас будет в
$switch
var. И в этот момент вы используете это везде, где вам это нужно:С настройкой HTTPS приложение php автоматически определит правильный протокол и тщательно построит относительный путь для предотвращения проблем со смешанным содержимым.
С уважением.
источник
На основе ответа @Ulli.Если вы хотите настроить его с помощью Terraform , вот пример>
Источник
источник
Создайте файл
.ebextensions/00_forward_http_to_https.config
со следующим содержанием:Обязательно заранее установите переменную среды APP_URL в консоли управления AWS.
источник