Endless Redirect Loop с AWS ELB и сайтом WordPress с использованием wordpress https-плагина

Я настроил ELS AWS, чтобы указать на мой сервер Ubuntu, на котором запущен Wordpress 3.2.1. Все работало отлично на сервере, пока я не поставил его за балансировщик нагрузки.

Я настраиваю балансировщик нагрузки для пересылки порта 80 на порт 80 и порт 443 на порт 80.

Я устанавливаю свой файл виртуальных хостов для проверки заголовков из локтя:

  

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.

Как только я получаю доступ к серверу напрямую, а не через локоть, он снова работает.

Любые идеи о том, как я могу заставить это работать с ELS AWS?

10 голосов | спросил ChickenFur 24 PM000000100000003531 2011, 22:07:35

4 ответа


13

Я бы рискнул предположить, что вы не разместите свою конфигурацию 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)

ответил Jeremy Bouse 25 AM00000020000003231 2011, 02:36:32
14

Попробуйте добавить это к своему httpd.conf или .htaccess

SetEnvIfNoCase X-FORWARDED-PROTO "^https$" HTTPS

При использовании балансировщика нагрузки + HTTPS ваш веб-сервер не знает, что HTTPS используется на переднем конце, поэтому продолжает пытаться перенаправить на сайт HTTPS, когда на самом деле HTTPS уже используется.

Вышеупомянутый будет переводить заголовок, который балансировщик нагрузки Amazon отправляет (X-Forwarded-Proto: https) в переменную среды, которую понимают Wordpress и другие PHP-скрипты ( HTTPS=1)

ответил A.B. Carroll 8 J0000006Europe/Moscow 2015, 09:05:18
1

Цитата из другого полезного сообщения https://serverfault.com/a/858308/450836 :

  

Для меня достаточно было установить $ _SERVER ['HTTPS'] = 'on'; в wp-config.php. Я использую AWS ELB, который завершает SSL на ELB. Поэтому nginx принимает запрос на порт 80 (8080 после лака), и похоже, что wordpress не смог справиться с ним, пока вы явно не сообщите PHP, что сайт уже использует https ...

Для прослушивателя ELB без SSL я использую отдельную конфигурацию для перенаправления всего трафика на https в качестве слушателя по умолчанию.

ответил Tim 5 Jpm1000000pmFri, 05 Jan 2018 19:13:42 +030018 2018, 19:13:42
0

Исправить слишком много проблем с перенаправлением в aws ALB

Включить модуль заголовка, а затем добавить следующую запись в конфигурацию apache

SetEnvIf X-Forwarded-Proto "https" HTTPS = on         RequestHeader устанавливает HTTPS «on» env = HTTPS

    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} !https
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
ответил George Ulahannan 29 J0000006Europe/Moscow 2018, 21:21:59

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132