Я использую AWS Elastic Load Balancer и настроил следующее правило конвертировать http
трафик в https
.
/etc/httpd/conf.d/httpd_redirect.conf
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</VirtualHost>
Однако когда я захожу на свой сайт через его домен (www.thewhozoo.com), Я вижу, что протокол http
и нет https
.
Есть идеи, почему правило перезаписи не работает?
Спасибо
Больше информации
/etc/httpd/conf/httpd.conf
...
Include conf.d/*.conf
Include conf.d/elasticbeanstalk/*.conf
...
Вышеуказанное создается при развертывании:
.ebextensions/myapp.config
container_commands:
01_setup_apache:
command: "cp .ebextensions/enable_mod_deflate.conf /etc/httpd/conf.d/enable_mod_deflate.conf"
files:
"/etc/httpd/conf.d/httpd_redirect.conf" :
mode: "000644"
owner: root
group: root
content: |
<VirtualHost *:80>
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTP_USER_AGENT} !^ELB-HealthChecker
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
</VirtualHost>
Слушатели ELB
У вас есть фрагмент конфигурации /etc/httpd/conf.d/ssl_rewrite.conf
Обычно такие сниппеты загружаются Include
или IncludeOptional
директива
Include conf.d/*.conf
или
IncludeOptional conf.d/*.conf
из вашего основного httpd.conf
.
Проблема в том, что эти фрагменты применяются только к вашей основной конфигурации и не применяются ни к каким VirtualHost
разделы ...
Либо включите эти настройки в определение виртуального хоста, либо загрузите туда этот фрагмент:
<VirtualHost *:80>
ServerName www.thewhozoo.com
Include /etc/httpd/conf.d/ssl_rewrite.conf
</VirtualHost>
Или даже лучше, не используйте mod_rewrite и установите:
<VirtualHost *:80>
ServerName www.thewhozoo.com
Redirect "/" "https://www.thewhozoo.com/"
</VirtualHost>