Brotli#
Это набор из двух модулей:
ngx_brotli_filter
— используется для сжатия ответов на лету.ngx_brotli_static
— используется для обработки предварительно сжатых файлов.
Загрузка модулей#
Подключение модулей в контексте main{}
:
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
Пример конфигурации для динамического сжатия#
server {
listen 80 default_server;
brotli on;
brotli_comp_level 1;
brotli_types text/plain text/css;
location / {
root /usr/share/angie/html;
index index.html;
try_files $uri $uri/ =404;
}
}
Подготовка к демонстрации#
Предварительно разместим тестовый файл war-and-peace.txt
:
$ ls -l /usr/share/angie/html/
total 3292
-rw-r--r-- 1 root root 497 Feb 13 07:40 50x.html
-rw-r--r-- 1 root root 543 Feb 13 07:40 index.html
-rw-r--r-- 1 root root 3359405 Feb 26 12:47 war-and-peace.txt
$ mkdir tmp
Запрос на получение сжатого файла:
$ curl -s -H 'Accept-encoding: br' -o tmp/war-and-peace.br localhost/war-and-peace.txt
$ ls -l tmp/
total 1092
-rw-r--r-- 1 asv asv 1115616 Feb 26 16:52 war-and-peace.br
Пример конфигурации для обработки предварительно сжатых файлов#
server {
listen 80 default_server;
brotli_static on;
brotli_types text/plain text/css;
location / {
root /usr/share/angie/html;
index index.html;
try_files $uri $uri/ =404;
}
}
Перемещение предварительно сжатого файла#
$ sudo mv tmp/war-and-peace.br /usr/share/angie/html/war-and-peace.txt.br
$ ls -l /usr/share/angie/html/
total 4384
-rw-r--r-- 1 root root 497 Feb 13 07:40 50x.html
-rw-r--r-- 1 root root 543 Feb 13 07:40 index.html
-rw-r--r-- 1 root root 3359405 Feb 26 12:47 war-and-peace.txt
-rw-r--r-- 1 root root 1115616 Feb 26 16:57 war-and-peace.txt.br
Запрос на получение сжатого файла:
$ curl -s -H 'Accept-encoding: br' -o tmp/war-and-peace.br localhost/war-and-peace.txt
$ ls -l tmp/
total 1092
-rw-r--r-- 1 asv asv 1115616 Feb 26 17:13 war-and-peace.br
Совмещение динамического и статического сжатия#
В одной конфигурации возможно совмещение использования динамического сжатия
(brotli on
) и статического выбора (brotli_static on
). В этом
случае сначала будет производиться поиск соответствующего статического сжатого
файла. Если такой файл не найден, произойдет динамическое сжатие файла,
определенного в запросе.
Дополнительная информация#
Полное описание директив и исходный код доступны по ссылке: google/ngx_brotli.