Конфигурация nginx 0.7+
Конфигурация nginx 0.7+
Пример конфигурационного файла для одного виртуального сервера:
server {
#слушаем порт 80
listen 80;
#перечисляем через пробел имена этого сервера
server_name core.freewheel.ru:
#путь к корню сервера
root /my/path/to/core.freewheel.ru;
#пути к логам
access_log /my/path/to/core-access.log combined;
error_log /my/path/to/core-access.log info;
#подключаем шаблон настроек сервера, в нем самое интересное
include _servers_template;
#разрешаем себе посмотреть статус сервера
location = /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
#включаем сжатие для тех браузеров, которые его понимают
gzip on;
#определяем минимальную версию протокола HTTP, для которой отдаем архивы
gzip_http_version 1.0;
#устанавливаем максимальный уровень сжатия
gzip_comp_level 9;
#разрешаем проксировать сжатые файлы
gzip_proxied any;
#и определяем типы файлов (все, которые хорошо сжимаются)
gzip_types text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript image/x-icon;
}
А теперь собственно основной файл настроек (_servers_template), использующийся для всех виртуальных серверов в неизменном виде:
index index.php index.html;
location / {
# стили, скрипты и XML-файлы
location ~* ^.+.(css|js|xml)$ {
# вот для этого и делались заранее архивированные .gz версии
# css и js файлов. Nginx не будет тратить время и сжимать их каждый раз
# заново, а просто отдаст уже готовые архивы, если браузер клиента может
# их принять
gzip_static on;
expires 1y;
}
# несуществующие файлы html и папки отправляем на бэкенд
if (!-e $request_filename ) {
rewrite ^/(.*)$ /index.php ;
}
# проксируем все запросы к PHP-файлам на FCGI бэкенд
location ~* .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include _fastcgi_params;
}
# картинки
location ~* ^.+.(bmp|gif|jpg|jpeg|ico|png|swf|tiff)$ {
expires 1y;
}
# файлы
location ~* ^.+.(bz2|dmg|gz|gzip|rar|tar|zip)$ {
expires 1y;
}
# другие статические файлы
location ~* ^.+.(pdf|txt)$ {
expires 1y;
}
}
Обычно nginx собирается без модуля статического сжатия, поэтому при его сборке надо указать опцию --with-http_gzip_static_module — без этого gzip_static не заработает, и серверу придется сжимать файлы каждый раз заново. Также надо иметь в виду, что указанная конфигурация приведена для версии 0.7+.