Poupe até 53% em Servidores VPS, escolha agora. Oferta limitada.

Passo a passo para configurar compressão Gzip e Brotli no Nginx

15 min de leitura  ·  Guia técnico

Gzip e Brotli no Nginx são métodos de compressão que reduzem significativamente o tamanho dos arquivos enviados aos visitantes do seu site. Para configurá-los corretamente, você precisa modificar os arquivos de configuração do Nginx. Neste guia, você aprenderá como implementar ambos os métodos de compressão e economizar até 80% de largura de banda.

Pré-requisitos

  • Servidor com Nginx instalado (testado em Nginx 1.18+)
  • Acesso root ou sudo ao servidor
  • Sistema operacional Linux (Ubuntu 22.04 LTS, Debian 11 ou similar)
  • Módulo ngx_brotli instalado (para compressão Brotli)

Entendendo a compressão web no Nginx

A compressão de conteúdo web funciona reduzindo o tamanho dos arquivos antes de enviá-los ao navegador do usuário. Quando um visitante acessa seu site, o navegador informa ao servidor quais métodos de compressão ele suporta através do cabeçalho HTTP Accept-Encoding. O Nginx então comprime os arquivos usando o método mais eficiente suportado pelo navegador.

Os dois principais algoritmos de compressão usados no Nginx são:

  • Gzip: Amplamente suportado por praticamente todos os navegadores e clientes HTTP
  • Brotli: Desenvolvido pelo Google, oferece taxas de compressão 15-25% melhores que o Gzip, mas com suporte limitado em navegadores mais antigos

Implementar ambos os métodos garante máxima compatibilidade e eficiência. O Nginx servirá arquivos comprimidos com Brotli para navegadores modernos e usará Gzip como fallback para clientes mais antigos.

Configurando a compressão Gzip no Nginx

A compressão Gzip vem integrada ao Nginx por padrão, facilitando sua ativação. Vamos configurá-la primeiro:

  1. Abra o arquivo de configuração principal do Nginx:
sudo nano /etc/nginx/nginx.conf
  1. Localize a seção http { e adicione ou modifique as seguintes diretivas dentro dela:
http {
    # Outras configurações existentes...
    
    # Configuração Gzip
    gzip on;
    gzip_comp_level 5;
    gzip_min_length 256;
    gzip_proxied any;
    gzip_vary on;
    gzip_types
        application/atom+xml
        application/javascript
        application/json
        application/ld+json
        application/manifest+json
        application/rss+xml
        application/vnd.geo+json
        application/vnd.ms-fontobject
        application/x-font-ttf
        application/x-web-app-manifest+json
        application/xhtml+xml
        application/xml
        font/opentype
        image/bmp
        image/svg+xml
        image/x-icon
        text/cache-manifest
        text/css
        text/plain
        text/vcard
        text/vnd.rim.location.xloc
        text/vtt
        text/x-component
        text/x-cross-domain-policy;
    
    # Outras configurações...
}
  1. Salve o arquivo e verifique se a configuração do Nginx está correta:
sudo nginx -t

Você deverá ver uma saída como esta:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
  1. Reinicie o Nginx para aplicar as alterações:
sudo systemctl restart nginx

Explicação das diretivas Gzip

Vamos entender o que cada configuração faz:

  • gzip on: Ativa a compressão Gzip
  • gzip_comp_level 5: Define o nível de compressão (1-9). O nível 5 oferece bom equilíbrio entre taxa de compressão e uso de CPU
  • gzip_min_length 256: Comprime apenas arquivos maiores que 256 bytes (compressão de arquivos muito pequenos pode ser contraproducente)
  • gzip_proxied any: Comprime respostas para todos os tipos de solicitações proxy
  • gzip_vary on: Adiciona o cabeçalho "Vary: Accept-Encoding" para informar caches que o conteúdo pode variar dependendo do encoding
  • gzip_types: Lista de tipos MIME que serão comprimidos (além do padrão text/html)

Instalando e configurando a compressão Brotli no Nginx

A compressão Brotli não vem integrada ao Nginx por padrão. Precisamos instalar o módulo ngx_brotli e depois configurá-lo:

Instalando o módulo Brotli para Nginx

  1. Instale as dependências necessárias:
sudo apt update
sudo apt install -y git build-essential libpcre3-dev zlib1g-dev
  1. Verifique a versão do seu Nginx:
nginx -v

O resultado será algo como:

nginx version: nginx/1.18.0 (Ubuntu)
  1. Baixe o código-fonte do Nginx na mesma versão que você está usando:
cd /tmp
wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar -xzf nginx-1.18.0.tar.gz
  1. Clone o repositório do módulo ngx_brotli:
git clone https://github.com/google/ngx_brotli.git
cd ngx_brotli
git submodule update --init
  1. Obtenha os argumentos de configuração do seu Nginx atual:
nginx -V

Copie todos os argumentos após "configure arguments:" para usar no próximo passo.

  1. Compile o Nginx com o módulo Brotli:
cd /tmp/nginx-1.18.0
./configure [cole aqui os argumentos originais] --add-dynamic-module=/tmp/ngx_brotli
make modules
  1. Copie o módulo compilado para o diretório de módulos do Nginx:
sudo cp objs/ngx_http_brotli_filter_module.so /usr/lib/nginx/modules/
sudo cp objs/ngx_http_brotli_static_module.so /usr/lib/nginx/modules/
  1. Carregue os módulos Brotli no Nginx. Edite o arquivo:
sudo nano /etc/nginx/modules-enabled/brotli.conf

Adicione as seguintes linhas:

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

Configurando Brotli no Nginx

  1. Abra o arquivo de configuração principal do Nginx:
sudo nano /etc/nginx/nginx.conf
  1. Adicione as seguintes diretivas dentro da seção http {:
http {
    # Outras configurações existentes...
    
    # Configuração Brotli
    brotli on;
    brotli_comp_level 4;
    brotli_static on;
    brotli_types
        application/atom+xml
        application/javascript
        application/json
        application/ld+json
        application/manifest+json
        application/rss+xml
        application/vnd.geo+json
        application/vnd.ms-fontobject
        application/x-font-ttf
        application/x-web-app-manifest+json
        application/xhtml+xml
        application/xml
        font/opentype
        image/bmp
        image/svg+xml
        image/x-icon
        text/cache-manifest
        text/css
        text/plain
        text/vcard
        text/vnd.rim.location.xloc
        text/vtt
        text/x-component
        text/x-cross-domain-policy;
    
    # Outras configurações...
}
  1. Verifique a configuração do Nginx:
sudo nginx -t
  1. Reinicie o Nginx para aplicar as alterações:
sudo systemctl restart nginx

Explicação das diretivas Brotli

Vamos entender o que cada configuração faz:

  • brotli on: Ativa a compressão Brotli
  • brotli_comp_level 4: Define o nível de compressão (0-11). O nível 4 oferece bom equilíbrio entre taxa de compressão e uso de CPU
  • brotli_static on: Permite servir arquivos pré-comprimidos com extensão .br
  • brotli_types: Lista de tipos MIME que serão comprimidos (além do padrão text/html)

Verificando a configuração da compressão

Após configurar Gzip e Brotli, é importante verificar se estão funcionando corretamente. Existem várias maneiras de fazer isso:

Usando o comando curl

Você pode usar o comando curl para verificar os cabeçalhos de resposta do seu site:

curl -H "Accept-Encoding: gzip" -I https://seu-site.com/
curl -H "Accept-Encoding: br" -I https://seu-site.com/

Se a compressão estiver funcionando, você verá Content-Encoding: gzip ou Content-Encoding: br nos cabeçalhos de resposta.

Usando ferramentas online

Você também pode usar ferramentas online como GiftOfSpeed ou KeyCDN Brotli Test para verificar se seu site está usando compressão corretamente.

Medindo a economia de banda

Para medir quanto de banda você está economizando, compare o tamanho dos arquivos com e sem compressão:

  1. Verifique o tamanho sem compressão:
curl -H "Accept-Encoding: identity" -o arquivo_sem_compressao.html https://seu-site.com/
ls -la arquivo_sem_compressao.html
  1. Verifique o tamanho com Gzip:
curl -H "Accept-Encoding: gzip" --output arquivo_gzip.html https://seu-site.com/
ls -la arquivo_gzip.html
  1. Verifique o tamanho com Brotli:
curl -H "Accept-Encoding: br" --output arquivo_brotli.html https://seu-site.com/
ls -la arquivo_brotli.html

Compare os tamanhos para calcular a economia de banda. Tipicamente, você verá uma redução de 60-80% para arquivos HTML, CSS e JavaScript.

Otimizando as configurações de compressão

Para obter o melhor desempenho, você pode ajustar as configurações de compressão com base nas características do seu servidor e site:

Ajustando níveis de compressão

Os níveis de compressão afetam diretamente o uso de CPU e a taxa de compressão:

  • Gzip: Níveis variam de 1 (menor compressão, menor uso de CPU) a 9 (maior compressão, maior uso de CPU)
  • Brotli: Níveis variam de 0 a 11, com comportamento similar

Para servidores com recursos limitados, considere usar níveis mais baixos:

# Para servidores com CPU limitado
gzip_comp_level 3;
brotli_comp_level 2;

Para servidores com recursos abundantes, você pode aumentar os níveis:

# Para servidores com CPU abundante
gzip_comp_level 6;
brotli_comp_level 5;

Compressão condicional por tamanho de arquivo

Comprimir arquivos muito pequenos pode ser contraproducente. Ajuste o tamanho mínimo:

gzip_min_length 1000;  # Comprimir apenas arquivos maiores que 1KB

Configuração por site específico

Você também pode configurar a compressão para sites específicos em seus arquivos de configuração de servidor ou bloco de localização:

server {
    listen 80;
    server_name exemplo.com www.exemplo.com;
    
    # Configurações específicas para este site
    gzip_comp_level 7;  # Compressão mais agressiva para este site
    brotli_comp_level 6;
    
    # Resto da configuração...
}

Problemas comuns e como resolver

Sintoma: Compressão não está funcionando

Causa: Configuração incorreta ou módulos não carregados.
Solução: Verifique se os módulos estão carregados corretamente com nginx -V e se as diretivas estão na seção correta do arquivo de configuração. Certifique-se de que reiniciou o Nginx após as alterações.

Sintoma: Alto uso de CPU após ativar compressão

Causa: Níveis de compressão muito altos ou servidor com recursos limitados.
Solução: Reduza os níveis de compressão (gzip_comp_level e brotli_comp_level) para valores mais baixos, como 3 ou 4. Aumente também o valor de gzip_min_length para evitar comprimir arquivos pequenos.

Sintoma: Erro "unknown directive" ao reiniciar Nginx

Causa: Módulo Brotli não está instalado ou carregado corretamente.
Solução: Verifique se os arquivos do módulo existem em /usr/lib/nginx/modules/ e se as diretivas load_module estão corretas no arquivo de configuração.

Sintoma: Alguns navegadores recebem conteúdo não comprimido

Causa: Navegadores antigos podem não suportar Brotli ou enviar cabeçalhos Accept-Encoding diferentes.
Solução: Certifique-se de ter configurado tanto Gzip quanto Brotli para máxima compatibilidade. Verifique se gzip_vary e brotli_types incluem todos os tipos de conteúdo relevantes.

Sintoma: Arquivos estáticos não estão sendo comprimidos

Causa: Tipos MIME não incluídos nas diretivas gzip_types ou brotli_types.
Solução: Adicione os tipos MIME relevantes às diretivas gzip_types e brotli_types. Verifique os logs de acesso para identificar quais tipos estão faltando.

Perguntas frequentes sobre compressão no Nginx

Qual a diferença entre Gzip e Brotli?

Gzip é um algoritmo de compressão mais antigo e amplamente suportado, enquanto Brotli é mais recente e oferece melhor taxa de compressão (15-25% superior). Brotli é mais eficiente para arquivos de texto como HTML, CSS e JavaScript, mas tem suporte limitado em navegadores mais antigos.

Quanto de banda posso economizar com compressão no Nginx?

A economia de banda com compressão no Nginx varia entre 50% e 80%, dependendo do tipo de conteúdo. Arquivos de texto como HTML, CSS e JavaScript podem ser reduzidos em até 70-80%, enquanto JSON e XML tipicamente economizam 60-70% do tráfego original.

O Brotli funciona em todos os navegadores?

Não, o Brotli não funciona em todos os navegadores. Ele é suportado em versões modernas do Chrome, Firefox, Edge e Safari, mas navegadores mais antigos e alguns clientes específicos não o reconhecem. Por isso, é recomendado configurar Gzip como fallback quando Brotli não for suportado.

A compressão Gzip ou Brotli afeta o CPU do servidor?

Sim, a compressão aumenta o uso de CPU do servidor, especialmente em níveis mais altos de compressão. O Brotli geralmente consome mais recursos de CPU que o Gzip para compressão, mas oferece melhor taxa de compressão. Para balancear performance e economia de banda, recomenda-se usar níveis moderados (3-6 para Gzip, 4-5 para Brotli).

Posso usar Gzip e Brotli simultaneamente no Nginx?

Sim, é possível e recomendado configurar Gzip e Brotli simultaneamente no Nginx. O servidor detectará automaticamente qual método o navegador suporta através do cabeçalho Accept-Encoding e servirá o conteúdo no formato apropriado, priorizando Brotli quando disponível por sua melhor taxa de compressão.

Conclusão

  • A implementação de compressão Gzip e Brotli no Nginx pode reduzir o consumo de banda em até 80%, melhorando significativamente o tempo de carregamento do seu site.
  • Configure ambos os métodos para garantir compatibilidade com todos os navegadores, com Brotli oferecendo melhor compressão para navegadores modernos e Gzip servindo como fallback.
  • Ajuste os níveis de compressão de acordo com os recursos do seu servidor para encontrar o equilíbrio ideal entre economia de banda e uso de CPU.

Precisa de ajuda com otimização de servidores?

Configurar compressão é apenas um dos muitos ajustes que podem melhorar o desempenho do seu site. Nossos servidores VPS vêm com suporte técnico especializado para ajudar você a implementar estas e outras otimizações.

Conheça nossos planos de Servidor VPS otimizados

  • 0 Os usuários acharam isso útil
  • nginx, compressao, gzip, brotli, performance, vps, avirahost
Esta resposta foi útil?

Artigos Relacionados

Instalando painel de gerenciamento de hospedagem VirtualMin.

O virtualmin é um painel de gerenciamento de hospedagem de sites gratuito, que é suportado por...

Como usar a ferramenta oficial de acesso remoto do Windows no PC e celular

1. Pelo menu Iniciar, acesse os “Acessórios do Windows” e abra o “Conexão de Área de Trabalho...

Como acessar o painel de gerenciamento dos meus Serviços.

Para acessar o painel de gerenciamento do seu serviço basta seguir o passo á passo abaixo.   1....

Compreendendo o Servidor VPS: O que é e Como Funciona!

Um servidor VPS (Virtual Private Server) é uma solução de hospedagem na qual um servidor físico é...

Como trocar a senha do usuário root do servidor VPS ou Dedicado.

Para trocar a senha do usuário root em um servidor VPS da AviraHost, você pode seguir os...