Обработка Nginx в связке с Apache файла .htaccess
Обработка Nginx в связке с Apache файла .htaccess
При работе связки Nginx + Apache, требуется установка дополнительного модуля Apache, который позволит корректно передавать от Nginx к Apache реальный IP-адрес посетителя. В итоге получаем связку Nginx — mod_rpaf — Apache.
Достаточно давно была замечена проблема с обработкой ip в директивах Deny From (.htaccess или httpd.conf). Проблема заключается в том, что конструкция
Order Deny, Allow
Deny From all
Allow From 10.1.1.1
не разрешит доступ с IP 10.1.1.1 при обращении к порту 80, на который поступают все http-запросы. В нашей схеме, запросы на 80 порту обрабатывает Nginx и передает их Aapche, к примеру на порт 8080. Из-за бага mod_rpaf Allow From 10.1.1.1 не сработает, а все запросы будут получать ответ 403 Dorbidden. Аналогичная проблема и с Deny From 10.1.1.1.
Решение довольно простое. Мы будем использовать директиву SetEnvIf (подробности можно узнать в документации Apache: http://httpd.apache.org/docs/2.1/mod/mod_setenvif.html). Рабочий вариант будет выглядеть следующим образом:
SetEnvIf Remote_Addr ^10\.1\.1\.1 testrule
Order Deny,Allow
Deny from all
allow from env=testrule
Наше правило запретит доступ для всех, кроме ip 10.1.1.1
Автор: igel