Я настроил AWS ELB, чтобы он указывал на мой сервер Ubuntu, на котором работает Wordpress 3.2.1. Все отлично работало на сервере, пока я не установил балансировщик нагрузки.
Я настроил балансировщик нагрузки для перенаправления порта 80 на порт 80 и порта 443 на порт 80.
Я установил свой файл виртуальных хостов, чтобы проверить заголовки из elb:
RewriteEngine On
RewriteCond% {HTTP: X-Forwarded-Proto}! Https
RewriteRule! / Status https: //% {SERVER_NAME}% {REQUEST_URI} [L, R]
Теперь, когда я захожу на https URL, я получаю это сообщение:
Эта веб-страница имеет цикл перенаправления.
На веб-странице https://mywebsite.com/securepage/ получено слишком много перенаправлений.
Как только я отключил плагин WordPress https
( http://wordpress.org/extend/plugins/wordpress-https/ ),
страницы работают, но теперь в них много смешанного контента. страницы, которые должны быть https, больше не являются https.
Как только я получаю доступ к серверу напрямую, а не через elb, он снова работает.
Любые идеи о том, как я мог бы заставить это работать с AWS ELB?
источник
Ответы:
Я бы рискнул предположить, что вы не разместите конфигурацию ELB, что ELB перенаправляет трафик HTTPS (443 / tcp) на экземпляр EC2 по HTTP (80 / tcp). Затем вы
.htaccess
и плагин пытаетесь перенаправить его обратно на HTTPS, потому что он просматривается по HTTP.Посмотрите на свою консоль EC2 под,
Network & Security > Load Balancers
и я думаю, вы увидите, чтоPort Configuration
говорит что-то вроде443 forwarding to 80 (HTTPS, Certificate: blah)
источник
Попробуйте добавить это к вашему
httpd.conf
или.htaccess
При использовании балансировщика нагрузки + HTTPS ваш веб-сервер не знает, что HTTPS используется на внешнем интерфейсе, поэтому продолжает пытаться перенаправить на сайт HTTPS, хотя на самом деле HTTPS уже используется.
Вышеприведенный код переведет заголовок, который Amazon Load Balancer отправляет (
X-Forwarded-Proto: https
), в переменную среды, понятную Wordpress и другим PHP-скриптам (HTTPS=1
)источник
fastcgi_param HTTPS on;
Согласно Amazon здесь https://d0.awsstatic.com/whitepapers/deploying-wordpress-with-aws-elastic-beanstalk.pdf исправление:
Я все еще закончил с бесконечным циклом, поэтому я изменил свою конфигурацию WordPress с:
чтобы:
Это вынудит пользователей к https, даже если они введут http, плюс это облегчит разработку сайта в автономном режиме, потому что вы просто обновляете WP_HOME на локальный хост, и https больше не используется по умолчанию.
источник
Цитирую себя из другого полезного поста https://serverfault.com/a/858308/450836 :
Для прослушивателя ELB без SSL я использую отдельную конфигурацию для перенаправления всего трафика на https в качестве прослушивателя по умолчанию.
источник
Как предположил @Tim, это
$_SERVER['HTTPS']='on';
в wp-config.php помогло мне.Я также добавил это в свой файл .htaccess для принудительной установки HTTPS:
источник
Исправлено слишком много проблем с перенаправлением в aws ALB
Включите модуль заголовка и добавьте следующую запись в конфигурацию apache
SetEnvIf X-Forwarded-Proto "https" HTTPS = on RequestHeader установить HTTPS "on" env = HTTPS
источник