Можно ли разделить логи у nginx?

Mik Foxi
На сайте с 02.03.2011
Offline
1214
1399

сейчас все логи пишутся стандартно в /var/log/nginx/access.log

а можно ли как-то запросы попадающие под это правило писать в отдельный лог?

if ($http_user_agent ~* тут список плохих ботов) {
return 444;
}

чтоб эти боты не засоряли access.log

Антибот, антиспам, веб фаервол, защита от накрутки поведенческих: https://antibot.cloud/ (Зеркало: https://антибот.рф/ ) Форум на замену серчу: https://foxi.biz/
G
На сайте с 20.04.2013
Offline
5
#1

Немного сложнее:

if ($http_user_agent ~* (crawler) ) {

set $crawler 'yes';
}
location ~ .* {
if ($crawler = 'yes') {
access_log /var/log/nginx/blockedbots.log;
return 200;
}
}

http://serverfault.com/a/394701

Лично не проверял, но должно быть всё верно.

ContactRoot: свяжитесь с нашим админом (/ru/forum/814513)
A
На сайте с 19.07.2010
Offline
130
#2


if ($http_user_agent ~* тут список плохих ботов) {
access_log /var/log/nginx/nginx_bot444_log;
return 444;
}

когда надоест смотреть ботов, то

access_log off;

.............
G
На сайте с 20.04.2013
Offline
5
#3
admak:

if ($http_user_agent ~* тут список плохих ботов) {
access_log /var/log/nginx/nginx_bot444_log;
return 444;
}


когда надоест смотреть ботов, то
access_log off;

Директива access_log не разрешена внутри "if".

Точнее, "if" должен быть внутри "location":

Context: http
server
location
if in location
limit_except

http://wiki.nginx.org/HttpLogModule

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий