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

skinc nginx-forum на nginx.us
Пн Май 9 19:30:21 MSD 2011


Доброго времени суток.
Пытался в nginx/1.0.1 вынести Joomla-зависимый
кусок конфига в отдельный файл, для
облегчения добавления/изменения
сайтов с данной CMS следующим образом:

----- Секция Server в nginx.conf -----

server {
   listen   80;
   server_name   example.com;

   set   $home /home/www/example.com;
   root   $home/www;
   include   joomla_params;

   location / {
      try_files   $uri $uri/ @joomla;
   }
}

----- Файл joomla_params -----

error_log   $home/log/error.log;
access_log   $home/log/access.log main;

index index.php;

location ~ \.php$ {
   include   fastcgi_params;
   fastcgi_pass   unix:$home/php-fpm.sock;
   fastcgi_param   SCRIPT_FILENAME   /www$fastcgi_script_name;
   fastcgi_param   DOCUMENT_ROOT   /www;
}

location @joomla {
   include   fastcgi_params;
   fastcgi_pass   unix:$home/php-fpm.sock;
   fastcgi_param   SCRIPT_FILENAME   /www/index.php;
   fastcgi_param   SCRIPT_NAME   /index.php;
   fastcgi_param   DOCUMENT_ROOT   /www;
}

----- Конец конфига -----

Как выяснилось не работает по
следующим причинам:
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;").

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




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