Перейти к содержанию

brotli: динамические модули Brotli для NGINX

Установка на Debian/Ubuntu

Эти документы относятся к APT пакету nginx-module-brotli, предоставляемому репозиторием GetPageSpeed Extras.

  1. Настройте APT репозиторий, как описано в настройке APT репозитория.
  2. Установите модуль:
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;