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.