Модуль http_gzip#

Фильтр, сжимающий ответ методом gzip, что позволяет уменьшить размер передаваемых данных в 2 и более раз.

Осторожно

При использовании протокола SSL/TLS сжатые ответы могут быть подвержены атакам BREACH.

Пример конфигурации#

gzip            on;
gzip_min_length 1000;
gzip_proxied    expired no-cache no-store private auth;
gzip_types      text/plain application/xml;

Для записи в лог достигнутого коэффициента сжатия можно использовать переменную $gzip_ratio.

Директивы#

gzip#

Синтаксис:

gzip on | off;

Умолчание:

gzip off;

Контекст:

http, server, location, if в location

Разрешает или запрещает сжатие ответа методом gzip.

gzip_buffers#

Синтаксис:

gzip_buffers число размер;

Умолчание:

gzip_buffers 32 4k|16 8k;

Контекст:

http, server, location

Задает число и размер буферов, в которые будет сжиматься ответ. По умолчанию размер одного буфера равен размеру страницы. В зависимости от платформы это или 4K, или 8K.

gzip_comp_level#

Синтаксис:

gzip_comp_level степень;

Умолчание:

gzip_comp_level 1;

Контекст:

http, server, location

Устанавливает степень сжатия ответа методом gzip. Допустимые значения находятся в диапазоне от 1 до 9.

gzip_disable#

Синтаксис:

gzip_disable regex …;

Умолчание:

Контекст:

http, server, location

Запрещает сжатие ответа методом gzip для запросов с полями заголовка «User-Agent», совпадающими с заданными регулярными выражениями.

Специальная маска msie6 соответствует регулярному выражению «MSIE [4-6].», но работает быстрее. Из этой маски исключается «MSIE 6.0; … SV1».

gzip_http_version#

Синтаксис:

gzip_http_version 1.0 | 1.1;

Умолчание:

gzip_http_version 1.1;

Контекст:

http, server, location

Устанавливает минимальную HTTP-версию запроса, необходимую для сжатия ответа.

gzip_min_length#

Синтаксис:

gzip_min_length длина;

Умолчание:

gzip_min_length 20;

Контекст:

http, server, location

Устанавливает минимальную длину ответа, который будет сжиматься методом gzip. Длина определяется только из поля «Content-Length» заголовка ответа.

gzip_proxied#

Синтаксис:

gzip_proxied off | expired | no-cache | no-store | private | no_last_modified | no_etag | auth | any …;

Умолчание:

gzip_proxied off;

Контекст:

http, server, location

Разрешает или запрещает сжатие ответа методом gzip для проксированных запросов в зависимости от запроса и ответа. То, что запрос проксированный, определяется на основании наличия поля «Via» в заголовке запроса. В директиве можно указать одновременно несколько параметров:

off

запрещает сжатие для всех проксированных запросов, игнорируя остальные параметры;

expired

разрешает сжатие, если в заголовке ответа есть поле «Expires» со значением, запрещающим кэширование;

no-cache

разрешает сжатие, если в заголовке ответа есть поле «Cache-Control» с параметром «no-cache»;

no-store

разрешает сжатие, если в заголовке ответа есть поле «Cache-Control» с параметром «no-store»;

private

разрешает сжатие, если в заголовке ответа есть поле «Cache-Control» с параметром «private»;

no_last_modified

разрешает сжатие, если в заголовке ответа нет поля «Last-Modified»;

no_etag

разрешает сжатие, если в заголовке ответа нет поля «ETag»;

auth

разрешает сжатие, если в заголовке запроса есть поле «Authorization»;

any

разрешает сжатие для всех проксированных запросов.

gzip_types#

Синтаксис:

gzip_types mime-тип …;

Умолчание:

gzip_types text/html;

Контекст:

http, server, location

Разрешает сжатие ответа методом gzip для указанных MIME-типов в дополнение к «text/html». Специальное значение «*» соответствует любому MIME-типу. Ответы с типом «text/html» сжимаются всегда.

gzip_vary#

Синтаксис:

gzip_vary on | off;

Умолчание:

gzip_vary off;

Контекст:

http, server, location

Разрешает или запрещает выдавать в ответе поле заголовка «Vary: Accept-Encoding», если активны директивы gzip, gzip_static или gunzip.

Встроенные переменные#

$gzip_ratio#

достигнутый коэффициент сжатия — отношение размера исходного ответа к размеру сжатого.