October 19, 2011 08:11AM
Привет!

Возникла проблема со сложными сайтами (виртуальными хостами), для которых не хочется создавать несколько конфигурационных файлов из-за необходимости включения одних и тех же директив, связанными, например, с 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, то по предложенной схеме можно значительно сократить размер конфигураций. Просто предложение.

Андрей
Subject Author Posted

предложение: define внутри одного conf файла

locojohn October 19, 2011 08:11AM

Re: предложение: define внутри одного conf файла

Craken October 19, 2011 07:33PM

Re: предложение: define внутри одного conf файла

locojohn October 19, 2011 07:41PM

Re: предложение: define внутри одного conf файла

vnagara October 30, 2011 05:50AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 240
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready