Проблема с директивами Allow, Deny в .htaccess при использовании Nginx и mod_rpaf2

воскресенье, 31 марта 2013 г.

На одном из моих серверов есть довольно стандартный набор софта - nginx для фронтэнда и кеширования статики, apache для обработки логики php. Кто работал с такой схемой, тот знает, что для того, чтобы apache знал IP-адрес пользователя в этой схеме (когда nginx проксирует запросы), то необходимо поставить дополнительный модуль mod_rpaf2.

Весь софт у меня был установлен и настроен, Apache нормально распознавал IP пользователя и все было замечательно, пока я не попробовал в .htaccess запретить доступ по IP для одного бота, который спамил в комментах. Благо у него всегда один и тот же адрес. И вот я по старой схеме стал писать в .htaccess

Order Allow,Deny
Allow from all
Deny from 123.456.78.9

И этот способ не сработал. А не сработал из-за какого-то странного бага в модуле mod_rpaf, о котором знают все, включая разработчиков, но вот исправили они баг или нет - пока что неизвестно.

Немного погуглил и нашел интересный способ решения задачи. В .htaccess пишем:

SetEnvIf Remote_Addr "^123\.456\.78\.9" realremoteaddr
Order Allow,Deny
Allow from all
Deny from env=realremoteaddr

Этот код закроет доступ к сайт для конкретного IP-адреса, а всем остальным доступ будет все еще открыт.

1 коммент.:

Анонимный комментирует...

А можно сменить rpaf на mod_realip или mod_extract_forwarded

Copyright © 2010 WEB IT blog