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