Доброго времени суток.
Пытался в 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;").