Цикл перенаправления wp-admin, когда за обратным прокси-сервером apache

Это мой первый пост в Server Fault, поэтому Прошу прощения за оплошность :)

Проблема: когда я пытаюсь получить доступ к " http: // dummy_server / wp-admin ", который находится за apache, действующим как WAF, он зависает в бесконечном цикле перенаправления.

Полную конфигурацию HAProxy и WAF можно найти здесь https://www.haproxy.com/blog/scalable-waf-protection-with-haproxy-and-apache -with-modsecurity /

Что бы я мог исследовать, если я обращаюсь к dummy_server при отключении VH apache (т.е. только с использованием прокси HA), когда я выполняю GET на dummy_server / wp-admin, сервер отвечает

HTTP/1.1 302 Found
Date: Wed, 20 Feb 2019 19:00:49 GMT
Location: https://dummy_server/wp-login.php?redirect_to=.....

Затем браузер перенаправляет на dummy_server / wp-login и ждет учетных данных пользователя.

Тем не менее, если я сделаю GET на dummy_server с активированным WAF, заголовок Location изменится на

Location: https://dummy_server/wp-admin

, и процесс застрянет в цикле перенаправления.

Если я выключу конфигурацию WAF (я использую modsecurity), чтобы apache действовал только как обратный прокси, но проблема не исчезнет.

Вот конфигурация виртуальной машины:

<VirtualHost *:90>
       <IfModule mod_security2.c>
                Include /etc/apache2/owasp-modsecurity-crs/crs-setup.conf
                SecRuleEngine On
                SecRequestBodyAccess On
                SecResponseBodyAccess On
        </IfModule>
        ProxyPreserveHost On
        ProxyRequests Off
        ProxyVia Off
        ProxyPass / http://192.168.57.22:81/
        ProxyPassReverse / http://192.168.57.22:81/
</VirtualHost>

Я искал в сайта, но я не нашел ничего, что помогло бы мне в моем нынешнем затруднительном положении. Есть идеи?

Спасибо!

1
задан 21 February 2019 в 17:02
1 ответ

Проблема в том, что ваш веб-сервер с выходом в Интернет использует https , но связь между этим сервером и Apache2 - http .

Затем Wordpress видит, что входящее соединение идет с протоколом http , но URL-адрес сайта был определен как https . Вот почему Wordpress отправляет перенаправление пользователю.

Я исправил эту проблему, добавив следующую строку в wp-config.php .

$_SERVER['HTTPS'] = 'on';

Я не знаю, является ли это предпочтительным способ решения этой проблемы, но он работает для меня.

Вам также необходимо иметь правильные заголовки Host , отправленные на прокси-сервер.

3
ответ дан 3 December 2019 в 18:25

Теги

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