brotli: динамические модули Brotli для NGINX
Установка
Вы можете установить этот модуль в любом дистрибутиве на базе 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-brotli
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-brotli
Включите модуль, добавив следующее в начало /etc/nginx/nginx.conf:
load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;
Этот документ описывает nginx-module-brotli v0.1.4 выпущенный 1 июля 2021.
Brotli — это универсальный алгоритм сжатия без потерь, который сжимает данные с использованием сочетания современной вариации алгоритма LZ77, кодирования Хаффмана и контекстного моделирования 2-го порядка, с коэффициентом сжатия, сопоставимым с лучшими из доступных на сегодняшний день методов сжатия общего назначения. По скорости он сопоставим с deflate, но обеспечивает более плотное сжатие.
ngx_brotli — это набор из двух модулей nginx:
- фильтрующий модуль ngx_brotli — используется для сжатия ответов «на лету»,
- статический модуль ngx_brotli — используется для отдачи предварительно сжатых файлов.
Директивы конфигурации
brotli_static
- синтаксис:
brotli_static on|off|always - по умолчанию:
off - контекст:
http,server,location
Включает или отключает проверку наличия предварительно сжатых файлов с расширением .br.
При значении always предварительно сжатый файл используется во всех случаях,
без проверки того, поддерживает ли это клиент.
brotli
- синтаксис:
brotli on|off - по умолчанию:
off - контекст:
http,server,location,if
Включает или отключает сжатие ответов «на лету».
brotli_types
- синтаксис:
brotli_types <mime_type> [..] - по умолчанию:
text/html - контекст:
http,server,location
Включает сжатие ответов «на лету» для указанных MIME-типов
в дополнение к text/html. Специальное значение * соответствует любому MIME-типу.
Ответы с MIME-типом text/html сжимаются всегда.
brotli_buffers
- синтаксис:
brotli_buffers <number> <size> - по умолчанию:
32 4k|16 8k - контекст:
http,server,location
Устарело, игнорируется.
brotli_comp_level
- синтаксис:
brotli_comp_level <level> - по умолчанию:
6 - контекст:
http,server,location
Задает уровень качества (сжатия) Brotli level для сжатия «на лету».
Допустимые значения находятся в диапазоне от 0 до 11.
brotli_window
- синтаксис:
brotli_window <size> - по умолчанию:
512k - контекст:
http,server,location
Задает размер окна Brotli size. Допустимые значения: 1k, 2k, 4k, 8k, 16k,
32k, 64k, 128k, 256k, 512k, 1m, 2m, 4m, 8m и 16m.
brotli_min_length
- синтаксис:
brotli_min_length <length> - по умолчанию:
20 - контекст:
http,server,location
Задает минимальную length ответа, который будет сжат.
Длина определяется только по полю заголовка ответа Content-Length.
Переменные
$brotli_ratio
Достигнутый коэффициент сжатия, вычисляемый как отношение между размером исходного ответа и размером сжатого ответа.
Пример конфигурации
brotli on;
brotli_comp_level 6;
brotli_static on;
brotli_types application/atom+xml application/javascript application/json application/rss+xml
application/vnd.ms-fontobject application/x-font-opentype application/x-font-truetype
application/x-font-ttf application/x-javascript application/xhtml+xml application/xml
font/eot font/opentype font/otf font/truetype image/svg+xml image/vnd.microsoft.icon
image/x-icon image/x-win-bitmap text/css text/javascript text/plain text/xml;
GitHub
Дополнительные советы по настройке и документацию по этому модулю можно найти в репозитории GitHub проекта nginx-module-brotli.