Saltar a contenido

brotli: Módulos dinámicos Brotli de NGINX

Instalación

Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:

  • RedHat Enterprise Linux 7, 8, 9 y 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 y 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

Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:

load_module modules/ngx_http_brotli_filter_module.so;
load_module modules/ngx_http_brotli_static_module.so;

Este documento describe nginx-module-brotli v0.1.4 lanzado el 01 de julio de 2021.


Brotli es un algoritmo de compresión sin pérdida de propósito general que comprime datos utilizando una combinación de una variante moderna del algoritmo LZ77, codificación Huffman y modelado de contexto de segundo orden, con una relación de compresión comparable a los mejores métodos de compresión de propósito general actualmente disponibles. Es similar en velocidad al deflate pero ofrece una compresión más densa.

ngx_brotli es un conjunto de dos módulos de nginx:

  • módulo de filtro ngx_brotli - utilizado para comprimir respuestas al vuelo,
  • módulo estático ngx_brotli - utilizado para servir archivos pre-comprimidos.

Directivas de configuración

brotli_static

  • sintaxis: brotli_static on|off|always
  • predeterminado: off
  • contexto: http, server, location

Habilita o deshabilita la verificación de la existencia de archivos pre-comprimidos con la extensión .br. Con el valor always, se utiliza el archivo pre-comprimido en todos los casos, sin verificar si el cliente lo soporta.

brotli

  • sintaxis: brotli on|off
  • predeterminado: off
  • contexto: http, server, location, if

Habilita o deshabilita la compresión de respuestas al vuelo.

brotli_types

  • sintaxis: brotli_types <mime_type> [..]
  • predeterminado: text/html
  • contexto: http, server, location

Habilita la compresión de respuestas al vuelo para los tipos MIME especificados además de text/html. El valor especial * coincide con cualquier tipo MIME. Las respuestas con el tipo MIME text/html siempre se comprimen.

brotli_buffers

  • sintaxis: brotli_buffers <number> <size>
  • predeterminado: 32 4k|16 8k
  • contexto: http, server, location

Obsoleto, ignorado.

brotli_comp_level

  • sintaxis: brotli_comp_level <level>
  • predeterminado: 6
  • contexto: http, server, location

Establece la calidad (compresión) level de la compresión Brotli al vuelo. Los valores aceptables están en el rango de 0 a 11.

brotli_window

  • sintaxis: brotli_window <size>
  • predeterminado: 512k
  • contexto: http, server, location

Establece el size de la ventana Brotli. Los valores aceptables son 1k, 2k, 4k, 8k, 16k, 32k, 64k, 128k, 256k, 512k, 1m, 2m, 4m, 8m y 16m.

brotli_min_length

  • sintaxis: brotli_min_length <length>
  • predeterminado: 20
  • contexto: http, server, location

Establece la longitud mínima length de una respuesta que será comprimida. La longitud se determina solo a partir del campo de encabezado de respuesta Content-Length.

Variables

$brotli_ratio

Relación de compresión lograda, calculada como la relación entre los tamaños de respuesta original y comprimida.

Ejemplo de configuración

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

Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-brotli.