Модуль 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” в заголовке запроса. В директиве можно указать одновременно несколько параметров:
|
запрещает сжатие для всех проксированных запросов, игнорируя остальные параметры; |
|
разрешает сжатие, если в заголовке ответа есть поле “Expires” со значением, запрещающим кэширование; |
|
разрешает сжатие, если в заголовке ответа есть поле “Cache-Control” с параметром “no-cache”; |
|
разрешает сжатие, если в заголовке ответа есть поле “Cache-Control” с параметром “no-store”; |
|
разрешает сжатие, если в заголовке ответа есть поле “Cache-Control” с параметром “private”; |
|
разрешает сжатие, если в заголовке ответа нет поля “Last-Modified”; |
|
разрешает сжатие, если в заголовке ответа нет поля “ETag”; |
|
разрешает сжатие, если в заголовке запроса есть поле “Authorization”; |
|
разрешает сжатие для всех проксированных запросов. |
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
#
достигнутый коэффициент сжатия — отношение размера исходного ответа к размеру сжатого.