Pular para conteúdo

brotli: Módulos dinâmicos Brotli do NGINX

Instalação

Você pode instalar este módulo em qualquer distribuição baseada em RHEL, incluindo, mas não se limitando a:

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

Ative o módulo adicionando o seguinte no topo 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 descreve o nginx-module-brotli v0.1.4 lançado em 01 de julho de 2021.


Brotli é um algoritmo de compressão sem perda de propósito genérico que comprime dados usando uma combinação de uma variante moderna do algoritmo LZ77, codificação Huffman e modelagem de contexto de 2ª ordem, com uma taxa de compressão comparável aos melhores métodos de compressão de propósito geral atualmente disponíveis. É semelhante em velocidade ao deflate, mas oferece uma compressão mais densa.

ngx_brotli é um conjunto de dois módulos do nginx:

  • módulo de filtro ngx_brotli - usado para comprimir respostas em tempo real,
  • módulo estático ngx_brotli - usado para servir arquivos pré-comprimidos.

Diretrizes de configuração

brotli_static

  • sintaxe: brotli_static on|off|always
  • padrão: off
  • contexto: http, server, location

Habilita ou desabilita a verificação da existência de arquivos pré-comprimidos com a extensão .br. Com o valor always, o arquivo pré-comprimido é usado em todos os casos, sem verificar se o cliente o suporta.

brotli

  • sintaxe: brotli on|off
  • padrão: off
  • contexto: http, server, location, if

Habilita ou desabilita a compressão em tempo real das respostas.

brotli_types

  • sintaxe: brotli_types <mime_type> [..]
  • padrão: text/html
  • contexto: http, server, location

Habilita a compressão em tempo real das respostas para os tipos MIME especificados além de text/html. O valor especial * corresponde a qualquer tipo MIME. Respostas com o tipo MIME text/html são sempre comprimidas.

brotli_buffers

  • sintaxe: brotli_buffers <number> <size>
  • padrão: 32 4k|16 8k
  • contexto: http, server, location

Depreciado, ignorado.

brotli_comp_level

  • sintaxe: brotli_comp_level <level>
  • padrão: 6
  • contexto: http, server, location

Define a qualidade (compressão) do Brotli em tempo real level. Os valores aceitáveis estão na faixa de 0 a 11.

brotli_window

  • sintaxe: brotli_window <size>
  • padrão: 512k
  • contexto: http, server, location

Define o size da janela do Brotli. Os valores aceitáveis são 1k, 2k, 4k, 8k, 16k, 32k, 64k, 128k, 256k, 512k, 1m, 2m, 4m, 8m e 16m.

brotli_min_length

  • sintaxe: brotli_min_length <length>
  • padrão: 20
  • contexto: http, server, location

Define o comprimento mínimo da length de uma resposta que será comprimida. O comprimento é determinado apenas pelo campo do cabeçalho de resposta Content-Length.

Variáveis

$brotli_ratio

Taxa de compressão alcançada, calculada como a razão entre os tamanhos da resposta original e comprimida.

Exemplo de configuração

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

Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-brotli.