Продвинутый анализатор HTTP запросов.

kermit32dll nginx-forum at nginx.us
Sat Jul 21 20:23:27 UTC 2012


Доброго времени суток,

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

1) имеется nginx, настроенный как прокси
для бэкэнда на Апаче.
2) принимаем запрос от пользователя, но
не сразу же проксируется на бэкэнд, а
"задерживается", а информация о запросе
скидывается в некий глобальный массив
3) на основании накопленных в массиве
запросов данных, скажем, за последние 5
секунд, постоянно обсчитывается
статистика для каждого IP, приславшего
какие-то запросы
4) если на основании статистики IP
распознаётся как зловредный, то все
запросы с него отбрасываются
(удаляются из массива из пункта "2" и
"забываются"), а сам IP заносится в чёрный
список и банится. А если же адрес
считается хорошим, т.е. за 5 секунд
ничего противозаконного не сделал, то
все накопленные запросы
пробрасываются на бэкэнд, а IP
запоминается как "хорошая".

Грубо говоря, имеется "мусорник", в
который скидываются все входящие
запросы, и если по прошествии 5 секунд
адрес не сделал ничего плохого в стиле
"10 х "GET /" за 2 секунды", то все запросы с
адреса пробрасываются на бэкэнд, а
иначе - удаляются.

Реализуемо ли это в nginx, или же подобная
блокировка запросов в nginx технически
невозможна?

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,228827,228827#msg-228827



Подробная информация о списке рассылки nginx-ru