Отдельный лог под сложное условие - Nginx

12
D
На сайте с 28.06.2008
Offline
1101
2762

Не подскажите, как прописать в конфиге, чтобы запросы вот под это условие писались в отельный лог?

1. $server_protocol = HTTP/1.1

2. Не учитывать - egrep -v 'png|gif|jpg|swf|\.js|css|YandexMobileBot|YandexAccessibilityBot|YandexDirect|YandexImages|Yahoo|Mediapartners-Google|YandexBot|Googlebot|msnbot|bingbot|Mail\.RU' |

M
На сайте с 17.09.2016
Offline
124
#1

с помощью map можно всё в одном условии отработать

http://nginx.org/ru/docs/http/ngx_http_map_module.html

D
На сайте с 28.06.2008
Offline
1101
#2

Ну к примеру условие упростим до такого

map "$whitelist:$server_protocol" $log {
default 0;
"0:HTTP/1.1" 1;
}

С $log потом что делать?

M
На сайте с 17.09.2016
Offline
124
#3

if ($log)

{

access_log /path type;

}

D
На сайте с 28.06.2008
Offline
1101
#4

нагуглил и проверил (работает) правильнее так

access_log /path/to/access.log combined if=$log;

А не подскажите как теперь в условие добавить чтобы не писало запросы к картинкам, ксс и js ?

С
На сайте с 14.04.2011
Offline
63
#5

location ~* ^.+\.(jpg|jpeg|gif)$ {

access_log /dev/null main;
}
D
На сайте с 28.06.2008
Offline
1101
#6

Сентябрь че то бред какой-то вы написали....

Вот какая мысль пришла - использовать $request_uri но не могу сообразить как прописать чтобы НЕ Включать это в лог.


map "$whitelist:$server_protocol:$request_uri" $log {
default 0;
"0:HTTP/1.1:~*^/images" 1;
}

+ в секцию сервер

access_log /path/to/access.log combined if=$log;
С
На сайте с 14.04.2011
Offline
63
#7

Dram

Это стандартный способ отключения логов для статических файлов.

Прописывается отдельный location, в нём говорится направлять логи в /dev/null. Что такое /dev/null знаете?

Можно просто написать access_log off, но какие-то версии nginx это не понимают и создают файл off.

D
На сайте с 28.06.2008
Offline
1101
#8

Можно ли в мап совместить ошибку и юзерагент? Хочу в отдельный лог собирать потенциально хороших ботов получивших 503 ошибку

по типу

map $error_page:$http_user_agent $good_useragent {
default 0;
503:~*YandexAccessibilityBot 1;
503~*YandexDirect 1;

То что не знаю как прописать выделил жирным

---------- Добавлено 26.01.2017 в 15:55 ----------

Наверное нужно сначала объявить как-то error_page 503 $error_page; но что дальшеделать не врублюсь

M
На сайте с 17.09.2016
Offline
124
#9

$status - в ней определён численный ответ (http статус) nginx'а клиенту

D
На сайте с 28.06.2008
Offline
1101
#10

Вы имеете в виду limit_req_status ? Так она ж вроде только сообщает нгихс какую ошибку выводить на прерывание запроса. Как мне это может подойти?

12

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