Балансировщик нагрузки aws перенаправляет все запросы https на экземпляр ec2 через порт 80. Мне нужно каким-то образом перенаправить весь HTTP-запрос на https.
До сих пор я понял, что вам нужно как-то изменить экземпляр ec2 с помощью правил перенаправления, а затем сохранить экземпляр как новый AMI и указать beanstalk на новый AMI.
Я нашел следующее правило перезаписи, но, к сожалению, не знаю, что с ним делать.
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^/(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [L,R=301]
Я ssh'd в свой экземпляр ec2 и пошел /etc/httpd/
и это все, что я сделал. Я совершенно потерялся в том, что мне оттуда делать.
Если да, то что все это значит? Я не знаю, какие у меня здесь настройки.
Наконец, я предполагаю, что я просто захожу в конфигурацию на своей панели инструментов beanstalk и просто указываю свой env beanstalk на мой новый AMI и перезапускаю сервер. Это звучит правильно?
Если кто-то знает, как это сделать, или веб-сайт, подробно описывающий процесс, я бы оценил это.
Хочу отметить, что я использую Java-приложение на Tomcat. Я не уверен, повлияет ли настраиваемый AMI на увеличение размеров серверов.
так что тебе нужно сделать несколько вещей
/etc/httpd/conf.d/elasticbeanstalk.conf
- добавьте свое правило перезаписи в раздел виртуального хостаХотя это не то, о чем вы просили, мы делаем это через CloudFront. Это намного проще, чем то, что вы предлагаете, и вы получаете все дополнительные преимущества CloudFront CDN, чтобы облегчить нагрузку на ваши экземпляры beanstalk ec2.
Сначала настройте распространение с происхождение который указывает на ваш балансировщик нагрузки beanstalk (вы также можете создать собственное происхождение, указывающее на ваше доменное имя эластичного beanstalk). Затем создайте поведение с «Политикой протокола просмотра» на «Перенаправить HTTP на HTTPS».
Единственная загвоздка в том, что вам может понадобиться повторно загрузить ваш ssl-сертификат, чтобы добавить «путь», чтобы его можно было использовать в CloudFront.
aws iam upload-server-certificate --server-certificate-name certificate_object_name --certificate-body file://public_key_certificate_file --private-key file://privatekey.pem --certificate-chain file://certificate_chain_file --path cloudfront_path
Для тех, кто какое-то время боролся, я нашел GitHub (от команды AWS) со всеми конфигурациями AWS, и это работает для перенаправления для Apache 2.2. (Конфиги для Apache 2.4 и Nginx см. По ссылке ниже).
Apache 2.2
Создайте файл в корневом каталоге вашего приложения: КОРНЕВОЙ_ПРОЕКТ / .ebextensions / httpd / conf.d / elasticbeanstalk.conf (При использовании Java IntelliJ убедитесь, что он добавлен в последний артефакт .WAR)
Добавьте следующие строки, чтобы включить перенаправление на виртуальном хосте:
<VirtualHost *:80>
LoadModule rewrite_module modules/mod_rewrite.so
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_USER_AGENT} !ELB-HealthChecker
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ProxyPass / http://localhost:8080/ retry=0
ProxyPassReverse / http://localhost:8080/
ProxyPreserveHost on
ErrorLog /var/log/httpd/elasticbeanstalk-error_log
</VirtualHost>
Чтобы увидеть больше примеров для Apache 2.4 и Nginx, посетите этот репозиторий GitHub:
Кроме того, доступно множество других полезных конфигураций и примеров.
С уважением
Создайте файл с именем elasticbeanstalk.conf внутри папки /src/main/webapp/.ebextensions/httpd/conf.d/ в каталоге вашего проекта.
Скопировать и вставить этот код в файл elasticbeanstalk.conf.
Удалите следующие строки.
Order deny,allow
Allow from all
И поставьте вместо этого эту строчку.
Require all granted
Измените строку
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
к
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Теперь сохраните файл, упакуйте свой проект и разверните его.