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

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.1.1, выпущенный 23 октября 2023 года.


## укажите словарь
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;
Контекст: http, server, location

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

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" используется во всех случаях, без проверки, поддерживает ли клиент его.

Переменные

ngx_http_zstd_filter_module

$zstd_ratio

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

GitHub

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