Unbrotli#
Модуль Модуль предоставляет следующие директивы: Для работы с модулем необходимо загрузить его в контексте Разместим сжатый тестовый файл Если клиент поддерживает Brotli, он получит сжатый файл без декомпрессии: Если клиент не поддерживает Brotli, модуль Файл был разархивирован сервером перед отправкой клиенту. Подробная документация и исходный код доступны по ссылке:
clyfish/ngx_unbrotli.unbrotli
предназначен для распаковки ответов от бэкенда,
использующих сжатие Brotli (Content-Encoding: br
), для клиентов, которые
не поддерживают этот метод сжатия. Это особенно полезно в случаях, когда
хранение данных в сжатом виде на бэкенде позволяет сэкономить место.Директивы#
unbrotli
– аналогична gunzip.unbrotli_buffers
– аналогична gunzip_buffers.Загрузка модуля#
main{}
:load_module modules/ngx_http_unbrotli_filter_module.so;
Пример конфигурации#
server {
listen 80 default_server;
location / {
root /usr/share/angie/html;
index index.html;
}
location /storage {
unbrotli on;
proxy_pass http://127.0.0.1:8080;
}
}
# Бэкенд
server {
listen 8080;
location /storage {
root /usr/share/angie;
rewrite ^(.*)$ $1.br break; # Возвращаем сжатый файл с суффиксом .br
add_header Content-Encoding br; # Указываем Brotli-сжатие в заголовке ответа
}
}
Демонстрация работы#
war-and-peace.txt.br
:$ ls -l /usr/share/angie/storage/
total 2292
-rw-r--r-- 1 root root 1115616 Feb 27 16:10 war-and-peace.txt.br
$ curl -s -H 'Accept-Encoding: br' -o tmp/war-and-peace.txt localhost/storage/war-and-peace.txt
$ ls -l tmp/
total 1092
-rw-r--r-- 1 asv asv 1115616 Feb 27 16:36 war-and-peace.txt
unbrotli
разархивирует файл
на сервере перед отправкой:$ curl -s -o tmp/war-and-peace.txt localhost/storage/war-and-peace.txt
$ ls -l tmp/
total 3284
-rw-r--r-- 1 asv asv 3359405 Feb 27 16:39 war-and-peace.txt
Дополнительная информация#