nginx deny ip - доступ запрещен правилом в журнале ошибок
Мы заблокировали некоторых плохих ботов, которые постоянно пытаются получить доступ к нашему сайту через директивы "Запретить" в NGINX. Мы не можем заблокировать его на брандмауэре, так как мы используем балансировщик нагрузки, к которому у нас нет доступа от нашего облачного провайдера.
Эта директива работает нормально, но наш файл nginx error.log заполняется этими запросами. Мы повернули их, но это плохо для нас, так как запросов так много, что мы не можем использовать журнал ошибок, чтобы увидеть, есть ли реальные ошибки, о которых нам следует помнить.
Итак, несколько вопросов:
- Как мы можем запретить nginx отправлять эти ошибки в error.log.
- Почему nginx считает это ошибкой? Если вы указываете директиву deny, а ip отклоняется, с точки зрения http это успешный ответ 403, и его вообще не следует считать ошибкой (imo).
3 ответа
В таком случае лучшим решением будет использование геоблокировки с возможностью отклонения таких запросов, как:
geo $blocked {
default 0;
1.1.1.1/32 1;
}
...
server {
if ($blocked) {
return 444;
}
}
Добавлять
access_log /dev/null;
error_log /dev/null;
кdeny
директивный уровень. Это должно предотвратить эти записи.
- В зависимости от вашей конфигурации вы можете добавить директиву в свой контекст (error_log).
Пример сaccess_log
но то же самое и с «error_log off»;
location = /robots.txt {
log_not_found off;
access_log off;
}
Если вы не можете, используйтеgrep
команда (или подобная)?!
- Без понятия. Возможно, это вопрос слоя. IP-адреса заблокированы уровневой сетью?!