Модуль ngx_http_gzip_module
— это фильтр, сжимающий ответ методом 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 on | off; |
---|---|
Умолчание: |
gzip off; |
Контекст: | http , server , location , if в location |
Разрешает или запрещает сжатие ответа методом gzip.
Синтаксис: | gzip_buffers число размер; |
---|---|
Умолчание: |
gzip_buffers 32 4k|16 8k; |
Контекст: | http , server , location |
Задаёт число
и размер
буферов, в которые будет сжиматься ответ. По умолчанию размер одного буфера равен размеру страницы. В зависимости от платформы это или 4K, или 8K.
До версии 0.7.28 по умолчанию использовалось 4 буфера размером 4K или 8K.
Синтаксис: | gzip_comp_level степень; |
---|---|
Умолчание: |
gzip_comp_level 1; |
Контекст: | http , server , location |
Устанавливает степень
сжатия ответа методом gzip. Допустимые значения находятся в диапазоне от 1 до 9.
Синтаксис: | gzip_disable regex ...; |
---|---|
Умолчание: | — |
Контекст: | http , server , location |
Эта директива появилась в версии 0.6.23.
Запрещает сжатие ответа методом gzip для запросов с полями заголовка “User-Agent”, совпадающими с заданными регулярными выражениями.
Специальная маска “msie6
” (0.7.12) соответствует регулярному выражению “MSIE [4-6]\.
”, но работает быстрее. Начиная с версии 0.8.11 из этой маски исключается “MSIE 6.0; ... SV1
”.
Синтаксис: | gzip_http_version 1.0 | 1.1; |
---|---|
Умолчание: |
gzip_http_version 1.1; |
Контекст: | http , server , location |
Устанавливает минимальную HTTP-версию запроса, необходимую для сжатия ответа.
Синтаксис: | gzip_min_length длина; |
---|---|
Умолчание: |
gzip_min_length 20; |
Контекст: | http , server , location |
Устанавливает минимальную длину ответа, который будет сжиматься методом gzip. Длина определяется только из поля “Content-Length” заголовка ответа.
Синтаксис: | 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 mime-тип ...; |
---|---|
Умолчание: |
gzip_types text/html; |
Контекст: | http , server , location |
Разрешает сжатие ответа методом gzip для указанных MIME-типов в дополнение к “text/html
”. Специальное значение “*
” соответствует любому MIME-типу (0.8.29). Ответы с типом “text/html
” сжимаются всегда.
Синтаксис: | gzip_vary on | off; |
---|---|
Умолчание: |
gzip_vary off; |
Контекст: | http , server , location |
Разрешает или запрещает выдавать в ответе поле заголовка “Vary: Accept-Encoding”, если активны директивы gzip, gzip_static или gunzip.