<!-- review: finished -->

<a id="external-unbrotli"></a>

# 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.

<a id="installation-28"></a>

## Instalação

Para [instalar](https://pt.angie.software//angie/docs/installation/index.md#install-packages) o módulo, use um dos seguintes pacotes:

- Angie: `angie-module-unbrotli`
- Angie PRO: `angie-pro-module-unbrotli`

<a id="directives-89"></a>

## Diretivas

O módulo fornece as seguintes diretivas:

- `unbrotli` – similar a [gunzip](https://pt.angie.software//angie/docs/configuration/modules/http/http_gunzip.md#id1)
- `unbrotli_buffers` – similar a [gunzip_buffers](https://pt.angie.software//angie/docs/configuration/modules/http/http_gunzip.md#gunzip-buffers)

<a id="loading-the-module-28"></a>

## Carregando o Módulo

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

```nginx
load_module modules/ngx_http_unbrotli_filter_module.so;
```

<a id="configuration-example-103"></a>

## Exemplo de Configuração

```nginx
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
    }
}
```

<a id="demonstration-3"></a>

## Demonstração

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

```console
$ 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 suportar Brotli, ele receberá o arquivo comprimido sem descompressão:

```console
$ 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 suportar Brotli, o módulo `unbrotli` descomprimirá o arquivo no servidor antes de enviar:

```console
$ 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.

<a id="additional-information-29"></a>

## Informações Adicionais

Documentação detalhada e código-fonte estão disponíveis em:
[https://github.com/clyfish/ngx_unbrotli](https://github.com/clyfish/ngx_unbrotli).
