Есть веб приложение со связкой nginx + tomcat. То есть nginx выступает в роли прокси, tomcat — основной сервер.
В последнее время в логах замечаю, что постоянно идут запросы на неправильные или не существующие URL-ы.
Например, у меня есть контроллер /setting/{ID}/get, а в логах идут множество цепочек вызова /setting//get или скажем вместо {ID} может быть перебор каких-то значений.
В целях снижения загрузки сервера и уменьшения исходящего трафика, можно ли как-то организовать автоматический бан IP адресов средствами nginx.
То есть скажем, если запрос с одного IP идет на несуществующий адрес, то после 10 таких запросов, IP адрес блокируется на час?
Если добавлять deny в конфиг, Nginx придется рестартить. Если надо именно решение на Nginx, можно например не пускать в бекенд по левым урлам, прописав максимально точные location-ы для существующих путей. Есть ещё вот такое оригинальное решение.
Блокировать слишком частые запросы с одного IP можно средставми NGINX wiki.nginx.org/HttpLimitReqModule
А бан IP на заданное время при подозрительном поведении лучше думаю сделать средствами Firewall