Конфигурация Apache 2
# выставляем заголовок Content‑Encoding: gzip
AddEncoding gzip .gz
# с самого начала включаем gzip для текстовых файлов
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
# и для favicon.ico
AddOutputFilterByType DEFLATE image/x‑icon
# также для CSS‑ и JavaScript‑файлов
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE application/x‑javascript
# далее устанавливаем максимальную степень сжатия (9)
# и максимальный размер окна (15). Если сервер не такой мощный,
# то уровень сжатия можно выставить в 1, размер файлов при этом
# увеличивается примерно на 20%.
DeflateCompressionLevel 9
DeflateWindowSize 15
# отключаем сжатие для тех браузеров, у которых проблемы с
# его распознаванием:
BrowserMatch ^Mozilla/4 gzip‑only‑text/html
BrowserMatch ^Mozilla/4\.0[678] no‑gzip
BrowserMatch Konqueror no‑gzip
BrowserMatch \bMSIE !no‑gzip !gzip‑only‑text/html
# указываем прокси‑серверам передавать заголовок User‑Agent для
# корректного распознавания сжатия
Header append Vary User‑Agent
# запрещаем кэширование на уровне прокси‑сервера для всех файлов,
# для которых у нас выставлено сжатие,
<FilesMatch .*\.(css|js|php|phtml|shtml|html|xml)$>
Header append Cache‑Control: private
</FilesMatch>
# включаем кэширование для всех файлов сроком на 10 лет
ExpiresActive On
ExpiresDefault "access plus 10 years"
# отключаем его для HTML‑файлов
<FilesMatch .*\.(shtml|html|phtml|php)$>
ExpiresActive Off
</FilesMatch>
Конфигурация 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+.
Дата добавления: 2015-05-19; просмотров: 701;