UnZstd#
Модуль Для установки модуля используйте один из следующих пакетов: Angie: Angie PRO: Модуль предоставляет следующие директивы: Для работы с модулем необходимо загрузить его в контексте Сожмем тестовый файл Если клиент поддерживает Zstandard, он получает сжатый файл без изменений: Если клиент не поддерживает Zstandard, модуль Файл Версия: 658990e Подробная документация и исходный код доступны по ссылке:
HanadaLee/ngx_http_unzstd_filter_moduleunzstd распаковывает ответы бэкенда, сжатые методом Zstandard
(Content-Encoding: zstd), для клиентов, которые не поддерживают это
кодирование. Так бэкенд может хранить данные в сжатом виде, экономя место на
диске и операции ввода-вывода, а любой клиент все равно получает ответ, который
может прочитать.Установка#
angie-module-unzstd;angie-pro-module-unzstd.Директивы#
unzstd — аналогична gunzip;unzstd_buffers — аналогична gunzip_buffers;unzstd_force — распаковывает ответы даже для клиентов, которые
поддерживают Zstandard;unzstd_dict_file — задает файл словаря для ответов, сжатых
со словарем Zstandard; допускается только в контексте http.Загрузка модуля#
main{}:load_module modules/ngx_http_unzstd_filter_module.so;
Пример конфигурации#
server {
listen 80 default_server;
location / {
root /usr/share/angie/html;
index index.html;
}
location /storage {
unzstd on;
proxy_pass http://127.0.0.1:8080;
}
}
# Бэкенд
server {
listen 8080;
location /storage {
root /usr/share/angie;
rewrite ^(.*)$ $1.zst break; # Возвращаем сжатый файл с суффиксом .zst
add_header Content-Encoding zstd; # Указываем сжатие Zstandard в заголовке ответа
}
}
Демонстрация работы#
sample.txt утилитой zstd
и разместим результат там, откуда его отдает бэкенд:$ zstd -19 sample.txt -o sample.txt.zst
sample.txt : 24.11% ( 1.43 MiB => 353 KiB, sample.txt.zst)
$ sudo mkdir -p /usr/share/angie/storage
$ sudo cp sample.txt.zst /usr/share/angie/storage/
$ wc -c /usr/share/angie/storage/sample.txt.zst
361662 /usr/share/angie/storage/sample.txt.zst
$ curl -s -H 'Accept-Encoding: zstd' -o received.zst localhost/storage/sample.txt
$ wc -c received.zst
361662 received.zst
unzstd распаковывает
файл перед отправкой:$ curl -s -o received.txt localhost/storage/sample.txt
$ wc -c received.txt
1500092 received.txt
received.txt содержит исходный текст размером 1500092 байта,
идентичный sample.txt, а не сжатые данные размером 361662 байта.Дополнительная информация#