=> Главная База Знаний Оптимизация сайта Конфигурация nginx 0.7+


Конфигурация 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+.