Skip to content

Instantly share code, notes, and snippets.

@diolektor
Created October 19, 2012 17:29
Show Gist options
  • Save diolektor/3919487 to your computer and use it in GitHub Desktop.
Save diolektor/3919487 to your computer and use it in GitHub Desktop.
Настройка хостов nginx для домашнего использования
# По мотивам http://habrahabr.ru/post/142648/
# Все проекты лежат по адресу: /home/projects/{имя.проекта}/public
server {
listen 80 default; # этот конфиг - умолчательный для 80 порта
server_name _; # хитрый ключик, обозначающий, что этот конфиг применим для любого сайта
set $sathost $host; # В sathost будет лежать имя сайта. Так же должна называться директрия с сайтом
root /home/projects/$sathost/public; # конень сайта определяем автоматически
index index.php index.html index.htm; # в каком порядке искать индексные файлы
access_log /var/log/nginx/$sathost.access.log;
error_log /var/log/nginx/$sathost.error.log error;
location ~ \.(jpg|jpeg|gif|css|png|js|ico|xml|swf|pdf|mov|fla|zip|rar)$ {
if (!-e $request_filename) { # если нет статического файла отдаем 404
return 404;
}
}
location / { # правила ниже применяются для любых запросов
if (!-d /home/projects/$sathost/public) { # если не нашли директорию с именем запрошенного сайта
return 404;
}
# начало rewrite
set $rflag 1; # так как логического объединения в условных выражениях нет, то вводим переменную для сложения двух условий. flag указывает на необходимость сделать переадресацию
if (-e $request_filename) { # если есть запрошенный файл, то переадресация не нужна
set $rflag 0;
}
if (!-f /home/projects/$sathost/public/index.php) { # если нет index.php в корне сайта, то переадресация тоже не нужна, ибо некуда
set $rflag 0;
}
if ($rflag = 1) { #
rewrite ^ /index.php?$args last;
}
# конец rewrite
if (-f $request_filename) { # для статических файлов включаем кэш на час
access_log off;
break;
}
}
location ~ \.php$ { # этот блок сработает при запросе .php файлов
root /home/projects/$sathost/public;
fastcgi_pass 127.0.0.1:9000; # тут висит php-fpm
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /home/projects/$sathost/public/$fastcgi_script_name;
include fastcgi_params;
break;
}
location ~ /\.ht { # в файлах, начинающихся на «.ht» могут лежать пароли или оставшиеся настройки от Апача - отдавать это ни к чему.
deny all;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment