Como economizar tráfego com mod_deflate no Lighttpd 1.4 (Debian Etch)
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 -VA 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.
- Instale ferramentas básicas de compilação:
apt-get install build-essential- Vá para /usr/src e baixe a fonte Debian do Lighttpd:
cd /usr/src
apt-get source lighttpd- Verifique a pasta criada:
ls -lExemplo 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#- 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.patchSe o patch aplicar corretamente verá mensagens como “patching file …” em vários arquivos.
- Construa o pacote Debian:
dpkg-buildpackageSe 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- 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.
- Instale o novo pacote (substitui o Lighttpd existente):
dpkg -i lighttpd_1.4.13-4etch1_i386.deb- 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- Verifique a versão novamente para confirmar o build date:
lighttpd -VA 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.confExemplo 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 restartSe 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.logA 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)
- Teste local: compile pacote em uma VM de teste com Debian Etch.
- Habilite mod_deflate com deflate.debug em ambiente de staging.
- Verifique compressão com curl e logs. Meça CPU e tempo de resposta.
- Ajuste parâmetros (buffer, níveis) conforme resultado.
- Implante em produção em janela de manutenção, monitorando métricas.
- 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
- Lighttpd: http://www.lighttpd.net
- mod_deflate: http://trac.lighttpd.net/trac/wiki/Mod_Deflate
- Debian: http://www.debian.org
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.
Materiais semelhantes
Instalar e usar Podman no Debian 11
Apt‑pinning no Debian: guia prático
Injete FSR 4 com OptiScaler em qualquer jogo
DansGuardian e Squid com NTLM no Debian Etch
Corrigir erro de instalação no Android