В моей конфигурации Nginx у меня есть несколько IP-блоков, чтобы бороться со спамерами и ботами.
Это очень эффективно, но в результате мои журналы ошибок очень быстро заполняются такими сообщениями об ошибках, как эти:
2015/12/16 00:56:28 [ошибка] 27748 # 0: * 120462 доступ запрещен по правилу, для борьбы со спамерами и ботами. Это очень эффективно, но в результате мои журналы ошибок очень быстро заполняются сообщениями об ошибках вроде этих: ...
В моей конфигурации Nginx у меня есть несколько IP-блоков, чтобы бороться со спамерами и ботами.
Это очень эффективно, но в результате мои журналы ошибок очень быстро заполняются такими сообщениями об ошибках, как эти:
2015/12/16 00:56:28 [ошибка] 27748 # 0: * 120462 доступ запрещен по правилу, для борьбы со спамерами и ботами. Это очень эффективно, но в результате мои журналы ошибок очень быстро заполняются сообщениями об ошибках вроде этих: ...
В моей конфигурации Nginx у меня есть несколько IP-блоков, чтобы бороться со спамерами и ботами.
Это очень эффективно, но в результате мои журналы ошибок очень быстро заполняются такими сообщениями об ошибках, как эти:
2015/12/16 00:56:28 [ошибка] 27748 # 0: * 120462 доступ запрещен по правилу, клиент: 167.114.xxx.xxx, сервер: bla bla ....
Теперь я не хочу полностью отключать ведение журнала ошибок, так как я хочу выяснить, что идет не так, когда что-то идет не так. Я просто хочу отключить ведение журнала этих сообщений «запрещено правилом».
Есть идеи, как это сделать?
Как уже упоминалось здесь , используйте условную каротажную запись:
Включение условной каротажки
Условная запись позволяет исключить тривиальный или неважный каротаж. записи из журнала доступа. В NGINX включено условное протоколирование параметром if директивы access_log.
Например, это позволяет исключить запросы со статусом HTTP коды 2XX (Успех) и 3XX (Переадресация):
map $status $loggable { ~^[23] 0; по умолчанию 1; } access_log /path/to/access.log объединены if=$loggable;
РЕДАКТИРОВАНИЕ:
так как @zsero описан в комментарии, условное протоколирование поддерживается только в access_log
, а не в error_log
.ref
Есть лучшее решение , предложено восходящим потоком — использовать геоблок с if, чтобы отклонить такие запросы, как:
geo $blocked {
default 0;
1.1.1.1/32 1;
}
...
server {
if ($blocked) {
return 444;
}
}