brotli: динамические модули Brotli для NGINX
Установка на Debian/Ubuntu
Эти документы относятся к APT пакету nginx-module-brotli, предоставляемому репозиторием GetPageSpeed Extras.
- Настройте APT репозиторий, как описано в настройке APT репозитория.
- Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-brotli
Показать дистрибутивы и архитектуры
| Дистрибутив | Версия | Компонент | Архитектуры |
|-------------|------------------|-------------|-----------------|
| debian | bookworm | main | amd64, arm64 |
| debian | bookworm-mainline| main | amd64, arm64 |
| debian | trixie | main | amd64, arm64 |
| debian | trixie-mainline | main | amd64, arm64 |
| ubuntu | focal | main | amd64, arm64 |
| ubuntu | focal-mainline | main | amd64, arm64 |
| ubuntu | jammy | main | amd64, arm64 |
| ubuntu | jammy-mainline | main | amd64, arm64 |
| ubuntu | noble | main | amd64, arm64 |
| ubuntu | noble-mainline | main | amd64, arm64 |
Brotli — это универсальный алгоритм сжатия без потерь, который сжимает данные, используя комбинацию модернизированной версии алгоритма LZ77, кодирования Хаффмана и контекстного моделирования второго порядка, с коэффициентом сжатия, сопоставимым с лучшими на данный момент доступными методами общего назначения. Он аналогичен по скорости с deflate, но обеспечивает более плотное сжатие.
ngx_brotli — это набор из двух модулей nginx:
- Модуль фильтра ngx_brotli — используется для динамического сжатия ответов,
- Статический модуль ngx_brotli — используется для обслуживания предварительно сжатых файлов.
Статус
Библиотека Brotli и модуль nginx активно разрабатываются.
Директивы конфигурации
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 <число> <размер> - значение по умолчанию:
32 4k|16 8k - контекст:
http,server,location
Устарело, игнорируется.
brotli_comp_level
- синтаксис:
brotli_comp_level <уровень> - значение по умолчанию:
6 - контекст:
http,server,location
Устанавливает качество (уровень) динамического сжатия Brotli. Допустимые значения находятся в диапазоне от 0 до 11.
brotli_window
- синтаксис:
brotli_window <размер> - значение по умолчанию:
512k - контекст:
http,server,location
Устанавливает размер окна Brotli. Допустимые значения: 1k, 2k, 4k, 8k, 16k, 32k, 64k, 128k, 256k, 512k, 1m, 2m, 4m, 8m и 16m.
brotli_min_length
- синтаксис:
brotli_min_length <длина> - значение по умолчанию:
20 - контекст:
http,server,location
Устанавливает минимальную длину ответа, который будет сжат. Длина определяется только по полю заголовка ответа 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;