Unbrotli#

El módulo unbrotli está diseñado para descomprimir respuestas del backend que utilizan compresión Brotli (Content-Encoding: br) para clientes que no soportan este método de compresión. Esto es particularmente útil en casos donde almacenar datos en forma comprimida en el backend ahorra espacio.

Instalación#

Para instalar el módulo, utilice uno de los siguientes paquetes:

  • Angie: angie-module-unbrotli

  • Angie PRO: angie-pro-module-unbrotli

Directivas#

El módulo proporciona las siguientes directivas:

Carga del módulo#

Para utilizar el módulo, debe cargarse en el contexto de main{}:

load_module modules/ngx_http_unbrotli_filter_module.so;

Ejemplo de configuración#

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;  # Devuelve el archivo comprimido con sufijo .br
        add_header Content-Encoding br; # Indica compresión Brotli en la cabecera de respuesta
    }
}

Demostración#

Coloquemos el archivo de prueba 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

Si el cliente soporta Brotli, recibirá el archivo comprimido sin descompresión:

$ 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

Si el cliente no soporta Brotli, el módulo unbrotli descomprimirá el archivo en el servidor antes de enviarlo:

$ 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

El archivo fue descomprimido por el servidor antes de ser enviado al cliente.

Información adicional#

La documentación detallada y el código fuente están disponibles en: clyfish/ngx_unbrotli.