Мы недавно обновили Apache 2.2 до 2.4.У нас есть два веб-сервера, которые работают за балансировщиком нагрузки, и они передают трафик через Cloudflare.
На веб-серверах у нас установлено mod_cloudflare .Мы принимаем во внимание балансировщики нагрузки со следующими директивами:
CloudflareRemoteIPTrustedProxy 172.21.171.17
CloudflareRemoteIPTrustedProxy 172.21.171.18
У нас есть административная область на нескольких сайтах, а также некоторые блоги и другие скрипты, которые мы хотим ограничить IP.Мы делаем это с помощью соответствия регулярному выражению в директиве Directory
следующим образом:
<Directory ~ "^/var/www/vhosts/[^/]+/public/((sage_import)|(partner)|((blog/)?wp-)?admin)">
AllowOverride All
Require ip 111.111.111.111 222.222.222.222 333.333.333.333
</Directory>
Большинство URL-адресов, которые обрабатываются этой работой, как и ожидалось.
domain.tld/sage_import/script.php
domain2.tld/blog/wp-admin
и т. Д.
Однако наша основная административная область, доступ к которой осуществляется с помощью domain3.tld/admin
(которая отлично работала с Apache 2.2), не работает.Странно то, что мы видим ошибку 503.В журналах не отображаются ошибки 503 - предположительно, это вообще не сервер?(Я следил за доступом к сайту и журналами ошибок, а также общим доступом apache и журналом ошибок, там ничего нет).
При просмотре с ip 111.111.111.111, если я удалю этот IP из Require ip
линия, рабочие страницы неожиданно показывают 403 ошибки, как и ожидалось, и журналы отражают это.Страница /admin
still показывает ошибку 503.
Однако, когда я добавляю IP-адреса балансировщика нагрузки в строку Require ip
, ошибка 503 исчезает, и я могу получить доступ к этой странице.
Require ip 111.111.111.111 222.222.222.222 333.333.333.333 172.21.171.17 172.21.171.18
Сравнение журналов запросов после добавления IP-адреса балансировщика нагрузки, кажется, не показывает ничего слишком интересного:
111.111.111.111 (141.101.98.187, 172.21.171.18) - - [27/Nov/2018:21:54:16 +0000] "GET /blog/wp-admin/ HTTP/1.0" 200 77064 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.1 Safari/605.1.15"
...
111.111.111.111 (141.101.98.187, 172.21.171.18) - - [27/Nov/2018:21:54:24 +0000] "GET /admin/ HTTP/1.0" 200 375 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.1 Safari/605.1.15"
...
111.111.111.111 (141.101.98.187, 172.21.171.18) - - [27/Nov/2018:21:54:37 +0000] "GET /sage_import/export.php HTTP/1.0" 200 33289 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_1) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0.1 Safari/605.1.15"
Используемый LogFormat выглядит следующим образом:
LogFormat "%h (%{X-Forwarded-For}i) %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" combined
Примечание: добавление Require all granted
в указанную выше директиву Directory
также работает.
Обновление
Я также пробовал:
SetEnvIf X-Forwarded-For 111.111.111.111 allow
Require env allow
вместо Require ip
, но я все еще получаю те же 503 возвращенных
Что не так с моей конфигурацией, которая вызывает эти 503 ошибки?