Re: access_log переопределить через if на уровне server

Alexander Kolesen kolesen.a на gmail.com
Ср Янв 18 22:24:17 UTC 2012


> Здравствуйте, коллеги.
> 
> Пытаюсь сделать так:
> server {
> listen ...
> if ($args ~ coolid){
>    access_log = /var/log/nginx/special_coolid-access.log
> }
> ....
> }
> 
> Получаю
> "access_log" directive is not allowed here
> 
> Пуркуа?
> 
> P.S. Основная цель - получить отдельный лог для запросов с coolid в
> аргументах.

Как вариант:

map $arg_coolid $access_log {
    ~^         special_coolid-access.log;
    default    access.log;
}

server {
    ...
    access_log /var/log/nginx/$access_log;
    ...
}

Если аргумент coolid присутствует в запросе и не пуст, то логгирование
таких запросов будет производиться в special_coolid-access.log.

Стоит принимать во внимания особенности, которые перечислены здесь:
http://nginx.org/ru/docs/http/ngx_http_log_module.html



Подробная информация о списке рассылки nginx-ru