Zstandard (zstd)#

Модуль добавляет поддержку Zstandard-сжатия ответов, как динамического (на лету), так и статического (предварительно сжатые файлы). В отличие от gzip, zstd обеспечивает более высокую скорость сжатия и распаковки при сопоставимом или лучшем уровне сжатия.

Модуль состоит из двух компонентов:

  • http_zstd_filter — для динамического сжатия ответов;

  • http_zstd_static — для обработки предварительно сжатых файлов.

Загрузка модуля#

Подключение модулей в контексте main{}:

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

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

server {
    listen 80 default_server;

    zstd_types text/plain text/css;
    zstd_min_length 256;         # Минимальная длина ответа для сжатия
    zstd_comp_level 3;           # Уровень сжатия (от 1 до 22)

    # Динамическое сжатие файлов
    location / {
        zstd on;
        root /usr/share/angie/html;
    }

    # Динамическое сжатие ответов от бэкенда
    location /bk/ {
        zstd on;
        proxy_pass http://127.0.0.1:8081/;
    }

    # Использование заранее сжатых файлов .zst
    location /static/ {
        zstd_static on;
        root /usr/share/angie;
    }
}

server {
    listen 8081;
    location / {
        root /usr/share/angie/html;
        index index.html;
    }
}

Особенности работы#

Допускается одновременное использование динамического (zstd on) и статического (zstd_static on) сжатия. В этом случае сервер сначала попытается найти предварительно сжатый файл с расширением .zst, а если не найдет — выполнит сжатие на лету.

Сжатие выполняется только при наличии заголовка Accept-Encoding, содержащего метод сжатия zstd, например:

Accept-Encoding: gzip, zstd

При успешном сжатии или при обнаружении соответствующего файла модуль добавляет в ответ заголовок:

Content-Encoding: zstd

Дополнительная информация#

Подробная документация и исходный код доступны по ссылке: tokers/zstd-nginx-module