Guia de tecnologias

Como economizar tráfego com mod_deflate no Lighttpd 1.4 (Debian Etch)

7 min read Servidor Atualizado 21 Oct 2025
Lighttpd: economize tráfego com mod_deflate
Lighttpd: economize tráfego com mod_deflate

Este guia mostra passo a passo como compilar e instalar um pacote Debian do Lighttpd 1.4.13 com suporte a mod_deflate em Debian Etch, configurar o módulo e verificar se a compressão HTTP está funcionando. Compressão reduz o tráfego transferido (HTML/texto/XML frequentemente ficam entre 20–30% do tamanho original), melhora tempos de download e é negociada automaticamente com navegadores.

Introdução

Este tutorial descreve como instalar e configurar mod_deflate em um servidor Lighttpd 1.4 no Debian Etch. O mod_deflate permite ao Lighttpd comprimir conteúdo estático e dinâmico (por exemplo PHP). Em Lighttpd 1.4 a compressão não vem ativada por padrão como em 1.5, portanto vamos compilar um pacote .deb com o patch mod_deflate e instalar no sistema.

Resumo técnico curto: mod_deflate aplica compressão compatível com navegadores modernos a respostas HTTP quando o cliente indica suporte (header Accept-Encoding). Compressão reduz bytes transferidos às custas de CPU adicional no servidor.

Importante: não invente números de produção sem testes; os valores de compressão variam conforme conteúdo e compressão aplicada.

Intenção principal e variantes relacionadas

Intenção principal: habilitar mod_deflate no Lighttpd 1.4 em Debian Etch. Variantes relacionadas: habilitar gzip/deflate em webserver, compilar módulos em pacotes Debian, reduzir uso de banda, comparar mod_compress vs mod_deflate.

1 Nota preliminar

Você pode seguir este tutorial tanto se o Lighttpd já estiver instalado quanto se não estiver. Vamos construir um novo pacote lighttpd_1.4.13.deb que substituirá a instalação existente (se houver).

Se o Lighttpd já estiver instalado, verifique a versão e recursos com:

lighttpd -V

A saída esperada deve indicar a versão 1.4.13 (exemplo mostrado abaixo). Este comando ajuda a confirmar que o binário instalado mudou após a recompilação.

server1:~# lighttpd -V  
lighttpd-1.4.13 (ssl) - a light and fast webserver  
Build-Date: Jun  1 2007 18:19:33  
  
Event Handlers:  

        + select (generic)  
        + poll (Unix)  
        + rt-signals (Linux 2.4+)  
        + epoll (Linux 2.6)  
        - /dev/poll (Solaris)  
        - kqueue (FreeBSD)  
  
Network handler:  

        + sendfile  
  
Features:  

        + IPv6 support  
        + zlib support  
        + bzip2 support  
        + crypt support  
        + SSL Support  
        + PCRE support  
        + mySQL support  
        + LDAP support  
        + memcached support  
        - FAM support  
        + LUA support  
        + xml support  
        + SQLite support  
        + GDBM support  
  
server1:~#

2 Compilando um novo pacote Lighttpd com suporte a mod_deflate

Passo a passo mínimo. Execute como root ou via sudo onde indicado.

  1. Instale ferramentas básicas de compilação:
apt-get install build-essential
  1. Vá para /usr/src e baixe a fonte Debian do Lighttpd:
cd /usr/src  
apt-get source lighttpd
  1. Verifique a pasta criada:
ls -l

Exemplo de saída (deve incluir lighttpd-1.4.13):

server1:/usr/src# ls -l  
total 804  
drwxr-xr-x 8 root root   4096 2007-08-08 19:03 lighttpd-1.4.13  
-rw-r--r-- 1 root src   15173 2007-06-01 20:15 lighttpd_1.4.13-4etch1.diff.gz  
-rw-r--r-- 1 root src    1098 2007-06-01 20:15 lighttpd_1.4.13-4etch1.dsc  
-rw-r--r-- 1 root src  793309 2007-06-01 20:15 lighttpd_1.4.13.orig.tar.gz  
server1:/usr/src#
  1. Baixe o patch mod_deflate e aplique-o às fontes:
wget http://trac.lighttpd.net/trac/attachment/wiki/Mod_Deflate/lighttpd-1.4.13.mod_deflate.jz.patch?format=raw  
mv lighttpd-1.4.13.mod_deflate.jz.patch?format=raw lighttpd-1.4.13.mod_deflate.jz.patch  
cd lighttpd-1.4.13  
patch -p1 < ../lighttpd-1.4.13.mod_deflate.jz.patch

Se o patch aplicar corretamente verá mensagens como “patching file …” em vários arquivos.

  1. Construa o pacote Debian:
dpkg-buildpackage

Se faltar dependências de build, dpkg-buildpackage irá indicar os pacotes que faltam (mensagem dpkg-checkbuilddeps). Instale-os com apt-get. Exemplo de instalação das dependências mencionadas:

apt-get install debhelper cdbs libssl-dev zlib1g-dev libbz2-dev libattr1-dev libpcre3-dev libmysqlclient15-dev libldap2-dev libfcgi-dev libgdbm-dev libmemcache-dev liblua5.1-0-dev dpatch patchutils pkg-config uuid-dev libsqlite3-dev libxml2-dev
  1. Execute dpkg-buildpackage novamente. Quando completar, um novo arquivo .deb aparecerá em /usr/src.

Observação: o patch requer suporte a bzip2; a versão Debian já inclui bzip2 por padrão, então não são necessárias ações extras.

  1. Instale o novo pacote (substitui o Lighttpd existente):
dpkg -i lighttpd_1.4.13-4etch1_i386.deb
  1. Copie o módulo mod_deflate.so para o diretório de módulos do Lighttpd:
cp /usr/src/lighttpd-1.4.13/debian/tmp/usr/lib/lighttpd/mod_deflate.so /usr/lib/lighttpd
  1. Verifique a versão novamente para confirmar o build date:
lighttpd -V

A saída deverá mostrar a Build-Date atualizada. Não é anormal não ver “mod_deflate” listado nas Features; o importante é que o arquivo mod_deflate.so esteja presente e o binário aceite carregá-lo quando configurado.

3 Configurando o Lighttpd

O arquivo de configuração no Debian Etch fica em /etc/lighttpd/lighttpd.conf. Abra-o e adicione “mod_deflate” no server.modules. Se usar mod_rewrite, garanta que mod_deflate venha depois dele.

Abra com seu editor preferido:

vi /etc/lighttpd/lighttpd.conf

Exemplo de trecho server.modules (mantive o formato original):

[...]
server.modules              = (
            "mod_access",
            "mod_alias",
            "mod_accesslog",
            "mod_fastcgi",
#           "mod_rewrite",
            "mod_deflate",
#           "mod_redirect",
#           "mod_status",
#           "mod_evhost",
#           "mod_compress",
#           "mod_usertrack",
#           "mod_rrdtool",
#           "mod_webdav",
#           "mod_expire",
#           "mod_flv_streaming",
#           "mod_evasive"
 )
[...]

Adicione a configuração do mod_deflate (recomendo colocá-la no final do arquivo):

[...]
deflate.enabled = "enable"
deflate.compression-level = 9
deflate.mem-level = 9
deflate.window-size = 15
# deflate.bzip2 only in patch for 1.4.x
deflate.bzip2 = "enable"
# deflate.allowed_encodings only in 1.5.x
#deflate.allowed_encodings = ( "bzip2", "gzip", "deflate" )
deflate.min-compress-size = 200
#deflate.sync-flush = "enable"
deflate.output-buffer-size = 4096
deflate.work-block-size = 512
deflate.mimetypes = ("text/html", "text/plain", "text/css", "text/javascript", "text/xml")
#deflate.debug = "enable"

Notas de configuração rápidas:

  • compression-level, mem-level e window-size controlam o trade-off entre CPU e taxa de compressão.
  • min-compress-size evita compressão de respostas muito pequenas (overhead negativo).
  • output-buffer-size pode precisar ser reduzido se páginas ficarem em branco (veja seção de resolução de problemas).

Depois de editar, reinicie o Lighttpd:

/etc/init.d/lighttpd restart

Se não houver erros, tente acessar páginas .html/.php/.txt no navegador.

4 Verificação e debug

Para confirmar que a compressão está ocorrendo, habilite o debug temporariamente descomentando:

deflate.debug = "enable"

Reinicie o servidor e acompanhe o log de erros:

tail -f /var/log/lighttpd/error.log

A saída mostrará linhas como:

[...]  
2007-08-08 18:40:33: (mod_deflate.c.919) in: 53875 out: 8446  
2007-08-08 18:40:33: (mod_deflate.c.1020) finished uri: /info.php , query:  
[...]

Isto indica que um recurso de 53.875 bytes foi reduzido para 8.446 bytes. Valores reais variam por conteúdo. Desative deflate.debug após verificar para evitar logs verbosos.

Resolução de problemas comuns

  • Página em branco após ativar mod_deflate: diminua deflate.output-buffer-size para 2048 ou 1024 e reinicie o serviço. Teste entre valores.
  • Debug mostra compressão, mas navegador não recebe compressão: verifique cabeçalhos HTTP (Accept-Encoding do cliente e Content-Encoding na resposta). Use curl para testar:
curl -I -H "Accept-Encoding: gzip,deflate" https://seu-servidor/exemplo.html
  • Erros durante dpkg-buildpackage: instale as dependências de build listadas pela saída do comando.
  • mod_deflate não é carregado: confirme que /usr/lib/lighttpd/mod_deflate.so existe e permissions permitem leitura.

Quando a compressão não é adequada

  • Conteúdo já comprimido (imagens JPEG/PNG, arquivos ZIP, vídeos) não deve ser comprimido; configure mimetypes apropriadamente.
  • Para arquivos pequenos (< deflate.min-compress-size) a compressão pode aumentar o tamanho total devido ao overhead.
  • Em servidores com CPU muito limitada, o custo de compressão pode piorar a latência em vez de ajudar. Considere compressão em camada de proxy ou cache em vez de no servidor de aplicação.

Abordagens alternativas

  • Usar mod_compress (Lighttpd 1.4) — limita-se a arquivos estáticos.
  • Fazer compressão em camada de reverse proxy (por exemplo, Varnish, nginx) e deixar o backend sem compressão.
  • Servir conteúdo pré-comprimido (.gz) para assets estáticos e configurar webserver para entregar .gz quando o cliente aceitar.
  • Migrar para Lighttpd 1.5+ ou outro servidor (nginx, Apache) com suporte nativo e mais opções de compressão.

Modelo mental e heurística de decisão

  • Heurística simples: se >30% do tráfego é HTML/texto e CPU disponível, habilite compressão. Se maior parte for mídia já comprimida, priorize cache e CDN.

Diagrama de decisão (Mermaid):

flowchart TD
  A[Tráfego do site] --> B{Maioria texto/HTML?}
  B -- Sim --> C{CPU disponível?}
  C -- Sim --> D[Habilitar mod_deflate no origin]
  C -- Não --> E[Compressão no proxy/CDN]
  B -- Não --> F[Não comprimir; usar cache/CDN]

Checklist por função

Administrador de sistema:

  • Fazer backup da configuração atual do Lighttpd
  • Baixar fontes e patch mod_deflate
  • Compilar e instalar pacote .deb novo
  • Verificar presença de /usr/lib/lighttpd/mod_deflate.so
  • Reiniciar e validar com logs

Desenvolvedor / DevOps:

  • Confirmar tipos MIME relevantes
  • Definir deflate.min-compress-size e níveis de compressão adequados
  • Testar páginas dinâmicas (e.g. PHP)

Operações / Suporte:

  • Monitorar CPU e latência após ativação
  • Verificar logs periódicos para erros de compressão
  • Reverter configuração se impacto negativo

Segurança, privacidade e considerações adicionais

  • Atenção a possíveis side-channels de compressão como BREACH em respostas que contenham tokens sensíveis junto com conteúdo compressível. Evite comprimir respostas que contenham dados secretos quando for aplicável.
  • Logs de debug devem ser desligados em produção.
  • Compressão não altera conformidade GDPR por si só, mas atente para dados sensíveis transitando em texto comprimido; proteja transporte com TLS.

Mini-metodologia de implantação (playbook curto)

  1. Teste local: compile pacote em uma VM de teste com Debian Etch.
  2. Habilite mod_deflate com deflate.debug em ambiente de staging.
  3. Verifique compressão com curl e logs. Meça CPU e tempo de resposta.
  4. Ajuste parâmetros (buffer, níveis) conforme resultado.
  5. Implante em produção em janela de manutenção, monitorando métricas.
  6. Tenha um plano de rollback (reinstalar pacote .deb anterior ou remover mod_deflate do server.modules).

FAQ

O mod_deflate excluirá usuários com navegadores antigos?

Não. A negociação HTTP (Accept-Encoding) garante que o servidor envie conteúdo descomprimido se o cliente não suportar compressão.

Posso comprimir imagens e vídeos com mod_deflate?

Não é recomendado: mídia e arquivos binários já comprimidos não se beneficiam e a compressão pode desperdiçar CPU.

Como reverter se algo der errado?

Reinstale o pacote anterior .deb ou remova “mod_deflate” do server.modules e reinicie o serviço. Mantenha o pacote original disponível antes de atualizar.

4 Links úteis

Resumo final

Habilitar mod_deflate em Lighttpd 1.4 no Debian Etch reduz tráfego e melhora tempos de carregamento para clientes, especialmente conexões lentas. A abordagem exige compilar um .deb com o patch, instalar o módulo, configurar parâmetros e validar com logs e ferramentas como curl. Teste em staging, monitore CPU e latência e mantenha um plano de rollback.

Key takeaways:

  • mod_deflate permite compressão de conteúdo estático e dinâmico em Lighttpd 1.4.
  • Compilação envolve aplicar patch, instalar dependências e rodar dpkg-buildpackage.
  • Ajuste output-buffer-size e níveis de compressão se notar problemas.
  • Evite comprimir conteúdo já comprimido e cuidado com possíveis riscos de side-channel.
Autor
Edição

Materiais semelhantes

Instalar e usar Podman no Debian 11
Containers

Instalar e usar Podman no Debian 11

Apt‑pinning no Debian: guia prático
Administração de sistemas

Apt‑pinning no Debian: guia prático

Injete FSR 4 com OptiScaler em qualquer jogo
Tecnologia

Injete FSR 4 com OptiScaler em qualquer jogo

DansGuardian e Squid com NTLM no Debian Etch
Infraestrutura

DansGuardian e Squid com NTLM no Debian Etch

Corrigir erro de instalação no Android
Android

Corrigir erro de instalação no Android

KNetAttach: Pastas de Rede remota no KDE
KDE

KNetAttach: Pastas de Rede remota no KDE