Unbrotli#

O módulo unbrotli é projetado para descomprimir respostas do backend que usam compressão Brotli (Content-Encoding: br) para clientes que não suportam este método de compressão. Isso é particularmente útil em casos onde armazenar dados em forma comprimida no backend economiza espaço.

Instalação#

Para instalar o módulo, use um dos seguintes pacotes:

  • Angie: angie-module-unbrotli

  • Angie PRO: angie-pro-module-unbrotli

Diretivas#

O módulo fornece as seguintes diretivas:

Carregando o Módulo#

Para usar o módulo, ele deve ser carregado no contexto de main{}:

load_module modules/ngx_http_unbrotli_filter_module.so;

Exemplo de Configuração#

server {
    listen 80 default_server;
    location / {
        root  /usr/share/angie/html;
        index index.html;
    }

    location /storage {
        unbrotli on;
        proxy_pass http://127.0.0.1:8080;
    }
}

# Backend
server {
    listen 8080;
    location /storage {
        root   /usr/share/angie;
        rewrite ^(.*)$ $1.br break;  # Retorna o arquivo comprimido com sufixo .br
        add_header Content-Encoding br; # Indica compressão Brotli no cabeçalho de resposta
    }
}

Demonstração#

Vamos colocar o arquivo de teste comprimido war-and-peace.txt.br:

$ ls -l /usr/share/angie/storage/
total 2292
-rw-r--r-- 1 root root 1115616 Feb 27 16:10 war-and-peace.txt.br

Se o cliente suporta Brotli, ele receberá o arquivo comprimido sem descompressão:

$ curl -s -H 'Accept-Encoding: br' -o tmp/war-and-peace.txt localhost/storage/war-and-peace.txt

$ ls -l tmp/
total 1092
-rw-r--r-- 1 asv asv 1115616 Feb 27 16:36 war-and-peace.txt

Se o cliente não suporta Brotli, o módulo unbrotli descomprimirá o arquivo no servidor antes de enviar:

$ curl -s -o tmp/war-and-peace.txt localhost/storage/war-and-peace.txt

$ ls -l tmp/
total 3284
-rw-r--r-- 1 asv asv 3359405 Feb 27 16:39 war-and-peace.txt

O arquivo foi descomprimido pelo servidor antes de ser enviado ao cliente.

Informações Adicionais#

Documentação detalhada e código-fonte estão disponíveis em: clyfish/ngx_unbrotli.