Перейти к содержанию

zstd: NGINX модуль для сжатия Zstandard

Установка

Вы можете установить этот модуль в любой дистрибутив на базе RHEL, включая, но не ограничиваясь:

  • RedHat Enterprise Linux 7, 8, 9 и 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-zstd
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-zstd

Активируйте модуль, добавив следующее в начало файла /etc/nginx/nginx.conf:

load_module modules/ngx_http_zstd_filter_module.so;
load_module modules/ngx_http_zstd_static_module.so;

Этот документ описывает nginx-module-zstd v0.2.1 выпущенный 27 июля 2026 года.


## укажите словарь
zstd_dict_file /path/to/dict;

server {
    listen 127.0.0.1:8080;
    server_name localhost;

    location / {
        # включить сжатие zstd
        zstd on;
        zstd_min_length 256; # не менее 256 байт
        zstd_comp_level 3; # установить уровень 3

        proxy_pass http://foo.com;
    }
}

server {
    listen 127.0.0.1:8081;
    server_name localhost;

    location / {
        zstd_static on;
        root html;
    }
}

Директивы

ngx_http_zstd_filter_module

Модуль ngx_http_zstd_filter_module является фильтром, который сжимает ответы с использованием метода "zstd". Это часто помогает уменьшить размер передаваемых данных вдвое или даже больше.

zstd_dict_file

Синтаксис: zstd_dict_file /path/to/dict;
По умолчанию: -
Контекст: http

Указывает внешний словарь.

ПРЕДУПРЕЖДЕНИЕ: Будьте осторожны! Регистрация кодирования содержимого только указывает способ сигнализировать о использовании формата zstd и не указывает никакого механизма для рекламы/переговоров/синхронизации использования конкретного словаря между клиентом и сервером. Используйте zstd_dict_file только если вы можете гарантировать, что обе стороны (сервер и клиент) способны использовать один и тот же словарь (например, рекламируйте с помощью HTTP-заголовка). См. https://github.com/tokers/zstd-nginx-module/issues/2 для подробностей.

zstd

Синтаксис: zstd on | off;
По умолчанию: zstd off;
Контекст: http, server, location, if in location

Включает или отключает сжатие zstd для ответа.

zstd_comp_level

Синтаксис: zstd_comp_level level;
По умолчанию: zstd_comp_level 1;
Контекст: http, server, location

Устанавливает уровень сжатия zstd для ответа. Допустимые значения находятся в диапазоне от 1 до ZSTD_maxCLevel().

zstd_min_length

Синтаксис: zstd_min_length length;
По умолчанию: zstd_min_length 20;
Контекст: http, server, location

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

zstd_types

Синтаксис: zstd_types mime-type ...;
По умолчанию: zstd_types text/html application/wasm text/wgsl;
Контекст: http, server, location

Включает zstd для ответов для указанных MIME-типов в дополнение к text/html. Специальное значение * соответствует любому MIME-типу.

application/wasm и text/wgsl сжимаются по умолчанию: оба являются текстоподобными форматами, которые обслуживаются под нетекстовым медиапотоком, поэтому они хорошо сжимаются, но их легко упустить. Явное указание zstd_types заменяет значения по умолчанию, кроме text/html, который всегда включен.

zstd_buffers

Синтаксис: zstd_buffers number size;
По умолчанию: zstd_buffers 32 4k | 16 8k;
Контекст: http, server, location

Устанавливает количество и размер буферов, используемых для сжатия ответа. По умолчанию размер буфера равен одной странице памяти. Это либо 4K, либо 8K, в зависимости от платформы.

ngx_http_zstd_static_module

Модуль ngx_http_zstd_static_module позволяет отправлять предварительно сжатые файлы с расширением .zst вместо обычных файлов.

zstd_static

Синтаксис: zstd_static on | off | always;
По умолчанию: zstd_static off;
Контекст: http, server, location

Включает ("on") или отключает ("off") проверку существования предварительно сжатых файлов. Также учитываются следующие директивы: gzip_vary.

При значении "always" файл "zstd" используется во всех случаях, без проверки, поддерживает ли клиент его.

Когда файл .zst не существует, запрос отклоняется без изменений, поэтому gzip_static и фильтр gzip по-прежнему применяются так, как обычно.

Переменные

ngx_http_zstd_filter_module

$zstd_ratio

Достигнутое соотношение сжатия, вычисляемое как отношение между оригинальным и сжатым размерами ответа.

GitHub

Вы можете найти дополнительные советы по настройке и документацию для этого модуля в репозитории GitHub для nginx-module-zstd.