У меня есть ELB, который изначально был настроен таким образом:
Protocal Port Forward-Protocol Port
Http 80 Http 80
Protocal Port Forward-Protocol Port
Https 443 Https 443
Поскольку я добавил свой сертификат SSL в ELB, а мой экземпляр EC2 находится внутри частной подсети, инженер службы поддержки AWS предложил изменить https на пересылку на http следующим образом:
Protocal Port Forward-Protocol Port
Http 80 Http 80
Protocal Port Forward-Protocol Port
Https 443 Http 80
Он сказал, что это лучшая практика, поскольку ELB уже делает все, что нужно в Https, поэтому нет причин добавлять накладные расходы и на мой экземпляр.
Проблема в том, что в моем экземпляре EC2 структура папок следующая:
Я хочу, чтобы мой сайт выполнял только запросы Https, поэтому я хочу использовать этот код в моем * .80 Virtual:
<VirtualHost *:80>
...
#Force the https
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI}
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} https
#Here i need a rule to change the document root.
...
</VirtualHost>
Моя проблема с этим кодом заключается в том, что он будет передавать запрос https, хотя, вероятно, мне нужно изменить корень документа, когда его https.
Могу предположить, что если он попал в http с переадресацией на https - соединение уже защищено.
С вашим правилом перезаписи весь трафик будет безопасным, поэтому файлы в незащищенной папке не нужны.
Я бы удалил существующую папку html и переименовал «безопасную» папку в html.