Nginx + Symfony. Создаем виртуальные хосты автоматически
Давно использую symfony в роли фреймворка php. В роли веб сервера nginx + php-fpm, заметил что многие не используют замечательной вещи, которую умеет nginx.
Ниже описанный скрипт, подходиткак раз для проектов написанных на symfony в принципе для любых проектов, но данный пример лично я использую для symfony. Создавать виртуальные хосты без рукаприкладства! ;)
Допустим у вас есть директория с проектами — /var/www/git/… Условие что директории проектов мы называемаем также как и хосты. Например /var/www/git/sait.ru. (если вы хотите что бы и www. работал, то достаточно просто сделать симлинк на данную папку (ln -s… )).
Итого: достаточно только создать хост в /etc/hosts и зарелодить nginx. Он сам подхватит проекты лежащие в вашей рабочей директории.
Ниже описанный скрипт, подходит
Допустим у вас есть директория с проектами — /var/www/git/… Условие что директории проектов мы называемаем также как и хосты. Например /var/www/git/sait.ru. (если вы хотите что бы и www. работал, то достаточно просто сделать симлинк на данную папку (ln -s… )).
Итого: достаточно только создать хост в /etc/hosts и зарелодить nginx. Он сам подхватит проекты лежащие в вашей рабочей директории.
server {
listen 80;
root /var/www/git/$host/web; # ваша папка с сайтами
server_name _;
charset utf-8;
location / {
if (-f $request_filename) {
expires max;
break;
}
if ($request_filename !~ "\.(js|htc|ico|gif|jpg|png|css)$") {
rewrite ^(.*) /index.php last;
}
}
location ~ \.php$ {
set $script $uri;
set $path_info "";
if ($uri ~ "^(.+\.php)(/.+)") {
set $script $1;
set $path_info $2;
}
root /var/www/git/$host;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/git/$host/web$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /var/www/git/$host/web;
fastcgi_param PATH_INFO $path_info;
include /usr/local/nginx/conf/fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}

комментарии (27)