Бан IP адреса средствами nginx ?

Есть веб приложение со связкой nginx + tomcat. То есть nginx выступает в роли прокси, tomcat — основной сервер.

В последнее время в логах замечаю, что постоянно идут запросы на неправильные или не существующие URL-ы.

Например, у меня есть контроллер /setting/{ID}/get, а в логах идут множество цепочек вызова /setting//get или скажем вместо {ID} может быть перебор каких-то значений.

В целях снижения загрузки сервера и уменьшения исходящего трафика, можно ли как-то организовать автоматический бан IP адресов средствами nginx.

То есть скажем, если запрос с одного IP идет на несуществующий адрес, то после 10 таких запросов, IP адрес блокируется на час?
  • Вопрос задан
  • 6667 просмотров
Решения вопроса 1
Stdit
@Stdit
Если добавлять deny в конфиг, Nginx придется рестартить. Если надо именно решение на Nginx, можно например не пускать в бекенд по левым урлам, прописав максимально точные location-ы для существующих путей. Есть ещё вот такое оригинальное решение.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
Блокировать слишком частые запросы с одного IP можно средставми NGINX wiki.nginx.org/HttpLimitReqModule
А бан IP на заданное время при подозрительном поведении лучше думаю сделать средствами Firewall
Ответ написан
Комментировать
@bondbig
без внешних скриптов, правящих постоянно конфиг nginx и делающих reload, ничего не выйдет.
Ответ написан
Комментировать
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
Дык. Отлавливайте 404ки через iptables и баньте, когда их станет много.
Ответ написан
@dborovikov
Можно написать модуль для nginx на lua.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы