Ну вот мой ответ на сайт, который я хочу ВСЕГО движения, направленного на https://example.com
. (Если вы хотите https://www.example.com
, вы можете сделать несколько настроек)
Во-первых, settings.php файл в Drupal в /sites/default/settings.php:
У меня есть следующие в этом файле:
$base_url = '//example.com';
$conf['reverse_proxy'] = TRUE;
$conf['reverse_proxy_addresses'] = array('name-of-my-loadbalancer.us-west-2.elb.amazonaws.com');
$conf['reverse_proxy_header'] = 'HTTP_X_CLUSTER_CLIENT_IP';
Если честно, я не знаю, нужны ли на самом деле настоящие настройки «reverse_proxy». Фактически, я отключил их, и это, похоже, не влияет ни на что, так может быть и не так. Важная часть - убедиться, что у вас есть файл $base_url = '//example.com';
в файле settings.php.
Следующая часть настраивает ваш файл .htaccess. Вот биты, которые имеют важное значение:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !=/healthy.html
RewriteRule^https://example\.com%{REQUEST_URI} [L,R=301]
Для нуб, как я, это было трудно понять, на первый, но вот разбивка:
RewriteCond %{HTTP:X-Forwarded-Proto} !https
Это смотрит на протокол посылается по балансировщик нагрузки. Если протокол НЕ https, инициируйте RewriteRule.
RewriteCond %{HTTPS} off
Если трафик направляется на сайт, который не является HTTPS, инициировани RewriteRule
RewriteCond %{REQUEST_URI} !=/healthy.html
это важный бит. У меня есть простой файл health.html, содержащий слово «Успех!». в моей главной директории веб-кортежей drupal для Apache. Когда файл health.html получает доступ к ELB, он обходит наше правило перезаписи. Если бы проверка работоспособности ELB не удалась, отключение нашего сервера (ов).
RewriteRule^https://example\.com%{REQUEST_URI} [L,R=301]
Вот фактическое правило перезаписи. Если все перечисленные выше условия пройдут, это перепишет входящий URL-адрес в https://example.com/whatever
. Кстати, L означает «Last», как в «это последнее правило этого набора», а «R = 301» означает «301 Redirect».
Единственный раз, когда это не делает правильный редирект, если я вручную ввести в https://www.example.com
(с HTTPS в начале). Думаю, я могу исправить это с помощью еще одного простого RewriteCond.
Это, похоже, не вопрос. Кроме того, проблема, о которой вы публикуете, уже была задана и ответила здесь несколько раз, например здесь: http://stackoverflow.com/questions/17174626/elb-and-apache-configuration-for-https-website –
I ' м, чтобы закрыть этот вопрос как вне темы, потому что это не вопрос. –
Извините - написали ответ. Ни один из других методов, которые я пробовал, не работал должным образом, или, по крайней мере, не был объяснен достаточно подробно, чтобы помочь мне. Попытка была выполнена, и вы сделали бесконечные перенаправления из-за используемого RewriteRule. Единственный способ заставить его работать - это вручную ввести свой домен. – tbox