предложение: define внутри одного conf файла
locojohn
nginx-forum на nginx.us
Ср Окт 19 12:11:27 UTC 2011
Привет!
Возникла проблема со сложными сайтами
(виртуальными хостами), для которых не
хочется создавать несколько
конфигурационных файлов из-за
необходимости включения одних и тех же
директив, связанными, например, с FastCGI
конфигурацией для PHP. Например, в
нижепреведенной конфигурации
виртуального хоста многие директивы
повторяются:
location ~ ^(?<SCRIPT_FILENAME>.+\.php)$ {
fastcgi_read_timeout 1800;
fastcgi_send_timeout 1800;
include fastcgi_php.conf;
fastcgi_param SCRIPT_URL $SCRIPT_FILENAME;
fastcgi_param SCRIPT_URI
$scheme://$http_host$SCRIPT_FILENAME;
fastcgi_param PHP_VALUE
"include_path=$document_root:$document_root/include";
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
fastcgi_param GEOIP_CITY_NAME $geoip_city;
fastcgi_pass phpfarm;
}
location ~ ^(?<SCRIPT_FILENAME>.+\.php)(?<PATH_INFO>.+)$
{
fastcgi_read_timeout 1800;
fastcgi_send_timeout 1800;
include fastcgi_php.conf;
fastcgi_param SCRIPT_URL $PATH_INFO;
fastcgi_param SCRIPT_URI
$scheme://$http_host$PATH_INFO;
fastcgi_param PHP_VALUE
"include_path=$document_root:$document_root/include";
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
fastcgi_param GEOIP_CITY_NAME $geoip_city;
fastcgi_pass phpfarm;
}
Есть и другие locations, где они
повторяются, и совершенно не хочется
из-за этого выносить этот простенький
кусочек в отдельный .conf файл, так как
файлов таких накопится много для
каждого виртуального хоста, а
возникает желание иметь лишь единый
конфигурационный файл для одного
виртуального хоста.
Предлагаю поразмыслить о возможности
делать какие-нибудь define {} блоки,
которые можно было бы включать в
локейшны в одном файле. Например:
define default_php_conf {
fastcgi_read_timeout 1800;
fastcgi_send_timeout 1800;
include fastcgi_php.conf;
fastcgi_param PHP_VALUE
"include_path=$document_root:$document_root/include";
}
location ~ ^(?<SCRIPT_FILENAME>.+\.php)$ {
include default_php_conf;
fastcgi_param SCRIPT_URL $SCRIPT_FILENAME;
fastcgi_param SCRIPT_URI
$scheme://$http_host$SCRIPT_FILENAME;
fastcgi_pass phpfarm;
}
location ~ ^(?<SCRIPT_FILENAME>.+\.php)(?<PATH_INFO>.+)$
{
include default_php_conf;
fastcgi_param SCRIPT_URL $PATH_INFO;
fastcgi_param SCRIPT_URI
$scheme://$http_host$PATH_INFO;
fastcgi_pass phpfarm;
}
Так как локейшнов может быть много,
из-за необходимости переделывания rewrite
на location + try_files, то по предложенной схеме
можно значительно сократить размер
конфигураций. Просто предложение.
Андрей
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,216908,216908#msg-216908
Подробная информация о списке рассылки nginx-ru