ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • To: nginx-ru@xxxxxxxxx
  • Subject: Re: Проблемы переменных в п утях лог-файлов
  • From: "skinc" <nginx-forum@xxxxxxxx>
  • Date: Mon, 09 May 2011 20:52:04 -0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mickey.jlkhosting.com; s=x; h=Date:Sender:From:References:In-Reply-To:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=5zDZ7ebF3GPMbJOLGeGBDD0TAiviXajvMuXU0TD7Wj8=; b=cMVDytGPIqEy4f9VS4VtLke6LF8pEa3+a1Pbp9O6brKCvlR79JmsMft4QOhwIwpqzvdYGVHIp8POaSPMxR4oAYQC/i4cffSAVcxv7n5M1bFbumolvRsreoU/VG6rDvN5;
  • In-reply-to: <20110509190359.GB51522@xxxxxxxxx>
  • References: <20110509190359.GB51522@xxxxxxxxx>

>> 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 mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.