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

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.