Re: Проблемы переменных в путях лог-файлов

skinc nginx-forum на nginx.us
Вт Май 10 04:52:04 MSD 2011


>> 1. error_log вообще не поддерживает
>> переменных - ошибка "nginx: [emerg] open()
>> "/$home/log/error.log" failed (2: No such file or directory)"
>
>Да.

Ок, буду знать что это ограничение.

>> 2. access_log добавляет префикс (${prefix}),
если
>> путь не начинается с символа "/" ("/$home"),
>> несмотря на то, что в значении
>> переменной он присутствует ("set $home
>> /home/www/example.com;").
>
>У access_log с переменными в имени куча
ограничений:
>http://sysoev.ru/nginx/docs/http/ngx_http_log_module.html#access_log
>
>error_log и access_log можно определять на
уровне сервера и они
>унаследуются во все location'ы. С fastcgi_pass
так не получится.

Про ограничения access_log и про
наследование знаю, но тут не в этом дело
(видимо мой пример конфига получился не
совсем однозначным в понимании...).
При определении переменной следующим
образом:

set $home /home/www/example.com;

некоторые директивы раскрывают путь
правильно:

root $home/www; # /home/www/example.com/www
fastcgi_pass unix:$home/php-fpm.sock; #
/home/www/example.com/php-fpm.sock

root /$home/www; # //home/www/example.com/www
fastcgi_pass unix:/$home/php-fpm.sock; #
//home/www/example.com/php-fpm.sock

а access_log ведет себя по иному :

access_log $home/log/access.log main; #
/usr/local/etc/nginx//home/www/example.com/log/access.log
access_log /$home/log/access.log main; #
//home/www/example.com/log/access.log

Собственно, проблема в этом - если путь
в директиве access_log начинается не с "/", то
он считается относительным без
проверки значения переменной, в
которой задан полный путь.

Posted at Nginx Forum: http://forum.nginx.org/read.php?21,196620,196862#msg-196862




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