Apache mod_gzip · 12 min read · Sep 14, 2025
mod_gzip - servindo conteúdo comprimido pelo servidor web Apache - Página 6
Autor: Michael Schröpl
A quantidade exata das funções solicitadas deve ser descrita por diretivas de configuração do Apache adicionais que se tornam disponíveis com a integração do módulo mod_gzip.
Uma documentação realmente completa do efeito dessas diretivas não está disponível no momento; em geral, assuma que
- quase tudo pode ser usado em qualquer ambiente, ou seja, - no escopo completo do servidor,
- em hosts virtuais separados,
- em diretórios ou até mesmo
- em arquivos .htaccess e
- basicamente os procedimentos padrão de sobrescrita do Apache se aplicam - exceto para as diretivas que especificam a seleção de conteúdos a serem comprimidos, onde as coisas se tornam um pouco mais complicadas.
A configuração descrita abaixo realmente não é destinada a ser copiada cegamente para sua própria configuração - sua intenção é dar uma ideia de quantas opções estão disponíveis. E há muitas opções - pelo menos se você ‘apenas quer obter dados de saída comprimidos’ …
| carregamento | responsabilidades | pré-comprimido | burocracia | gerenciamento de dados | tamanhos de arquivos | requisitos | filtros | codificação de transferência | registro | proxies |
#######################################
### Diretivas de configuração do Apache ###
### para mod_gzip 1.3.26.1a ###
#######################################
##########################
### carregando o módulo ###
##########################
# ---------------------------------------------------------------------
# carregar DLL / Win32:
# LoadModule gzip_module modules/ApacheModuleGzip.dll
#
# carregar DSO / UNIX:
# LoadModule gzip_module modules/mod_gzip.so
#
# (nenhum dos dois se o módulo foi compilado estaticamente;# o nome exato do arquivo pode depender do método de compilação exato usado
# para este módulo)# ---------------------------------------------------------------------
########################
### responsabilidades ###
########################
# ---------------------------------------------------------------------
# usar mod_gzip em tudo?
mod_gzip_on Sim
# (você pode especialmente habilitar mod_gzip dentro da configuração central do servidor
# mas desativá-lo dentro de alguns diretórios ou hosts virtuais usando esta diretiva.)
# ---------------------------------------------------------------------
######################################
### arquivos pré-comprimidos estaticamente ###
######################################
# ---------------------------------------------------------------------
# deixar mod_gzip realizar 'negociação de conteúdo parcial'?
mod_gzip_can_negotiate Sim
# (se esta opção estiver ativa e um arquivo estático estiver a ser servido em com-
# primido, então mod_gzip procurará uma versão pré-comprimida estática
# deste arquivo com uma extensão adicional definida - veja a próxima
# diretiva - que seria entregue com prioridade. Isso permitiria
# evitar a compressão repetida do mesmo arquivo estático e, assim,
# economizar tempo de CPU.
# Nenhum cache dinâmico deste arquivo é fornecido; atualmente o usuário
# é responsável por criar e atualizar o conteúdo do arquivo pré-comprimido.# A partir da versão 1.3.19.2a, mod_gzip reconhece automaticamente se
# um arquivo pré-comprimido estaticamente é mais antigo que seu original
# descomprimido e, nesse caso, servirá o conteúdo do arquivo original
# em forma descomprimida - para servir dados corretos em vez de
# desatualizados ...)# ---------------------------------------------------------------------# extensão (sufixo) para arquivos pré-comprimidos estaticamente
mod_gzip_static_suffix .gz
AddEncoding gzip .gz
# (efeito: veja a diretiva anterior; esta string será anexada ao
# nome do arquivo original.
# certifique-se de configurar a codificação 'gzip' para esta extensão também,
# porque mod_gzip não serve o conteúdo em si, mas simplesmente gera
# uma redireção interna do Apache para esta URL. Portanto, a configuração restante
# do Apache é responsável por definir o cabeçalho 'Content-Encoding'
# corretamente ...
# antes da versão 1.3.19.2a, este valor não era configurável.)# ---------------------------------------------------------------------# atualizações automáticas para arquivos pré-comprimidos estaticamente
mod_gzip_update_static Não
# (se definido como 'Sim', esta diretiva (sendo nova na versão 1.3.26.1a)
# faria com que mod_gzip atualizasse automaticamente uma versão desatualizada de qualquer
# arquivo pré-comprimido estaticamente durante a solicitação, ou seja, comprimir o
# arquivo originalmente solicitado e *sobrescrever* o arquivo variante
# pré-comprimido com ele!
# para cada atualização automática desse tipo, mod_gzip escreverá uma mensagem
# de severidade 'aviso' no log de erros do Apache.
# ao fazer isso, mod_gzip lerá diretamente o conteúdo do arquivo original.
# portanto, este conteúdo *não pode* ser interpretado por qualquer outro módulo do Apache
# durante a solicitação. isso pode *não* ser o que você deseja - esperamos
# que seja o que a maioria dos usuários deseja, porque funciona *rápido* dessa forma.
# use esta configuração com muito cuidado, e tenha certeza de que você não
# inadvertidamente cause a sobrescrita de arquivos valiosos dentro da árvore de URLs.
# isso *não é* um recurso a ser usado para servidores de hospedagem em massa, especialmente
# porque mod_gzip pode enfrentar problemas de controle de acesso lá - o
# userid sob o qual os processos do Apache estão sendo executados precisa ter acesso de gravação
# aos arquivos pré-comprimidos de todos os usuários, o que pode não ser automaticamente o
# caso.)
# [manipulação de erros do mod_gzip nesta situação??? o que será servido?]# ---------------------------------------------------------------------
###################
### burocracia ###
###################
# ---------------------------------------------------------------------
# exibir status para mod_gzip
mod_gzip_command_version '/mod_gzip_status'
# (define uma URL para exibir o status do mod_gzip; pode ser especificada
# individualmente para cada instalação e protegida contra acesso via
# seção por razões de privacidade)
# ---------------------------------------------------------------------
# A exibição de status ficará assim:
# mod_gzip está disponível...
# mod_gzip_version = 1.3.26.1a
# mod_gzip_on = Sim/Não
# e assim fornecerá informações sobre
# - mod_gzip estar instalado no servidor e funcionando corretamente,
# - qual versão foi instalada e
# - se mod_gzip foi definido como 'ativo' para esta Localização
# (-> mod_gzip_on)
# ---------------------------------------------------------------------
#######################
### gerenciamento de dados ###
#######################
# ---------------------------------------------------------------------
# Diretório de trabalho para arquivos temporários e o cache de compressão
# se não especificado, os seguintes valores padrão são usados:
# [Win32=c:\temp], [UNIX=/tmp]
# mod_gzip_temp_dir /tmp
# (Este diretório deve já existir e o userid usado para
# executar o servidor Apache deve ter acesso de leitura e gravação a este
# diretório.
# Ao contrário de outras diretivas do Apache, um nome de caminho absoluto deve ser especificado
# aqui; um valor relativo não será interpretado em relação ao ServerRoot.
# Este caminho passado não deve ser terminado com '/'.
# Para máximo desempenho, este diretório deve estar localizado em um disco RAM,
# se o sistema de arquivos não estiver sendo armazenado em cache de forma eficiente
# ---------------------------------------------------------------------
# Salvar arquivos de trabalho temporários [Sim, Não]
mod_gzip_keep_workfiles Não
# (um arquivo por solicitação HTTP - defina como 'sim' apenas para fins de depuração!)
# ---------------------------------------------------------------------
##################
### tamanhos de arquivos ###
##################
# ---------------------------------------------------------------------
# tamanho mínimo (em bytes) para arquivos a serem comprimidos
mod_gzip_minimum_file_size 500
# (para arquivos muito pequenos, a compressão produzirá apenas pequenos ganhos absolutos
# [você ainda economizará cerca de 50% do conteúdo, mas alguns adicionais
# 500 bytes de cabeçalhos HTTP e TCP sempre permanecerão descomprimidos],
# mas ainda produzirá carga de CPU tanto para o cliente quanto para o servidor.
# mod_gzip definirá automaticamente valores menores que 300 bytes para
# esta diretiva exatamente para este valor 300.)
# ---------------------------------------------------------------------
# tamanho máximo (em bytes) para arquivos a serem comprimidos
mod_gzip_maximum_file_size 500000
# (para arquivos muito grandes, a compressão pode eventualmente levar bastante tempo e
# assim atrasar o início da transmissão.
# Além disso, uma limitação neste ponto impede que o servidor produza saída de
# tamanho ilimitado em caso de algum loop infinito
# dentro de um script CGI - ou até mesmo tentando comprimir dados de streaming -
# que de outra forma poderia causar a criação de um arquivo temporário de
# qualquer tamanho e até encher todo o disco rígido.
# Por outro lado, a compressão terá um efeito subjetivo muito mais perceptível para arquivos grandes ... então, certifique-se de ajustar isso
# de acordo com suas necessidades.)
# ---------------------------------------------------------------------
# tamanho máximo (em bytes) para arquivos a serem comprimidos na memória
mod_gzip_maximum_inmem_size 60000
# (arquivos maiores serão comprimidos no diretório de arquivos temporários; adapte
# este valor à memória principal disponível do seu servidor.
# No mod_gzip 1.3.19.x, valores maiores serão automaticamente limitados a
# 60000 porque alguns sistemas operacionais têm problemas
# para alocar mais de 64 kb de memória de cada vez.
# ---------------------------------------------------------------------
####################
### requisitos ###
####################
# (veja o capítulo sobre cache para problemas ao usar essas diretivas.)
# ---------------------------------------------------------------------
# Versão HTTP requerida do cliente
# Valores possíveis: 1000 = HTTP/1.0, 1001 = HTTP/1.1, ...
# Esta diretiva usa os mesmos valores numéricos de protocolo que o Apache usa
# internamente
mod_gzip_min_http 1000
# (Usando esta diretiva, você pode excluir navegadores antigos, mecanismos de busca
# etc. do procedimento de compressão: se o agente do usuário não
# declarar-se capaz de entender pelo menos o nível HTTP
# especificado aqui, apenas dados descomprimidos serão entregues - não importa
# o que mais ele afirma ser capaz de. O valor de '1001' excluirá especialmente
# o Netscape 4.x. e muitos servidores proxy.)
# --------------------------------------------------------------------- # Métodos HTTP a serem tratados
# Valores possíveis: 'GET', 'POST' ou uma lista de ambos os valores.
mod_gzip_handle_methods GET POST
# (Usando esta diretiva, você pode particularmente excluir solicitações POST
# do procedimento de compressão. Existem casos conhecidos em que o
# tratamento dessas solicitações por versões anteriores do mod_gzip poderia causar
# problemas.
# Antes da versão 1.3.19.2a, este valor não era configurável.)# ---------------------------------------------------------------------
###############
### filtros ###
###############
# ---------------------------------------------------------------------
# quais arquivos devem ser comprimidos?
#
# A ordem de processamento durante cada uma das duas fases não é importante,
# mas para acionar a compressão do conteúdo de uma solicitação, essa solicitação
# a) *deve corresponder a pelo menos uma regra de inclusão em cada uma das duas fases* e
# b) *não deve corresponder a uma regra de exclusão em nenhuma das duas fases.*
# Essas regras não são mínimas, elas são destinadas a servir apenas como exemplo.
## Note que todos os valores de parâmetro das diretivas nesta seção são
# avaliados como expressões regulares, e *não* de forma sensível a maiúsculas e minúsculas.# ---------------------------------------------------------------------
# fase 1: (reqheader, uri, arquivo, manipulador)
# ========================================
# NÃO: navegadores quebrados especiais que solicitam conteúdo gzipped
# mas que não conseguem lidar com isso corretamente
mod_gzip_item_exclude reqheader "User-agent: Mozilla/4.0[678]"
# A partir da versão 1.3.19.2a, eu *desaconselho o uso de filtros*
# *para User-agents*, pois isso fará com que os cabeçalhos HTTP 'Vary: User-Agent'
# sejam gerados, dificultando a vida para servidores proxy.#
# JA: Documentos HTML
mod_gzip_item_include file \.html$
#
# NÃO: incluir arquivos / JavaScript & CSS (devido a bugs do Netscape4)
mod_gzip_item_exclude file \.js$
mod_gzip_item_exclude file \.css$
#
# SIM: scripts CGI
mod_gzip_item_include file \.pl$
mod_gzip_item_include handler ^cgi-script$
#
# fase 2: (mime, rspheader)
# ===========================
# SIM: arquivos HTML normais, arquivos de texto normais, listagens de diretório do Apache
mod_gzip_item_include mime ^text/html$
mod_gzip_item_include mime ^text/plain$
mod_gzip_item_include mime ^httpd/unix-directory$
#
# NÃO: imagens (GIF etc., raramente economizarão algo)
mod_gzip_item_exclude mime ^image/
# ---------------------------------------------------------------------
# Na verdade, mod_gzip está verificando apenas os primeiros 4 caracteres do 1º
# operando (no caso de uri, até mesmo os primeiros 2 caracteres apenas, para permitir
# valores como url).
# ---------------------------------------------------------------------
# A tabela para regras de mod_gzip_item (incluir e excluir) não pode conter
# mais de 256 entradas; quando esse número é excedido, mod_gzip irá
# emitir a mensagem "mod_gzip: ERRO: O índice do item está cheio"
# e relatar um erro de configuração ao servidor Apache.
# ---------------------------------------------------------------------
# Os valores de diretiva descritos aqui têm como objetivo descrever as solicitações
# eleitas para compressão *da forma mais exata possível*.
# Especialmente para as regras mime, deve-se deixar claro que o cabeçalho HTTP
# 'Content-Type' (que será verificado pelo mod_gzip para esta regra)
# em alguns casos pode conter não apenas um tipo MIME, mas também uma
# descrição de conjunto de caracteres (charset).
# Se este for o caso para as solicitações a serem tratadas, você precisará
# remover o caractere '$' no final do valor correspondente para que agora
# apenas o prefixo desse valor seja testado para correspondência.
# ---------------------------------------------------------------------
##########################
### codificações de transferência ###
##########################
# ---------------------------------------------------------------------
# Permitir que mod_gzip elimine o cabeçalho HTTP
# 'Transfer-encoding: chunked'
# e junte os pedaços em um único pacote (comprimível)
mod_gzip_dechunk Sim
# (isso é necessário para lidar com vários tipos de conteúdos gerados dinamicamente,
# especialmente para páginas CGI e SSI, mas também para páginas produzidas
# por alguns interpretadores de Servlets Java.
# ---------------------------------------------------------------------
###############
### registro ###
###############
# ---------------------------------------------------------------------
# Formato de log estendido (para testar o efeito da compressão)
LogFormat "%h %l %u %t \"%V %r\" %
# ---------------------------------------------------------------------
# Criar arquivo de log adicional
CustomLog logs/mod_gzip.log common_with_mod_gzip_info2
# (certamente você pode redefinir o formato do seu arquivo de log normal, mas você pode bem
# manter seu formato compatível com o padrão para avaliação por ferramentas de análise web
# padrão. Então, apenas criamos outro arquivo de log.)
# ---------------------------------------------------------------------
# Cálculo de volume dos arquivos entregues dentro do access_log do Apache:
# contar o tamanho do cabeçalho HTTP (em bytes) como parte do tamanho total da saída
mod_gzip_add_header_count Sim
# (Isso será mais do que o conteúdo puro do documento, mas descreverá mais
# realisticamente o tráfego total de saída da solicitação HTTP)
# ---------------------------------------------------------------------
###############
### proxies ###
###############
# ---------------------------------------------------------------------
# enviando um cabeçalho HTTP 'Vary'
mod_gzip_send_vary On
# (veja o capítulo sobre cache para esta diretiva.)
# *não mude isso a menos que você saiba absolutamente o que está fazendo!*
# ---------------------------------------------------------------------
Ordem ao carregar módulos
Ao adicionar este módulo dinamicamente, você deve ter em mente que o mod_gzip deve ser especificado como o último de várias diretivas LoadModule a serem usadas.
Isso porque o Apache construirá internamente uma pilha a partir das diretivas LoadModule e depois a avaliará na ordem inversa.
mod_gzip se conecta à rotina type_checker do Apache; mas apenas o primeiro de todos os módulos que se declaram responsáveis pelo tratamento de uma solicitação (por exemplo, ColdFusion e SSL tentarão) será realmente ativado pelo Apache. Portanto, o mod_gzip deve ser ativado antes daqueles módulos cuja saída deseja redirecionar para si mesmo e depois pós-processar - desde que esses módulos tentem usar a mesma interface type_checker … se não o fizerem, então pode funcionar independentemente dessa ordem de diretivas.
Durante a mensagem de início do Apache (que pode ser encontrada, por exemplo, dentro do log de erros do Apache), módulos com especificações de versão individuais podem ser listados exatamente na ordem em que aparecem na cadeia de módulos; lá, o mod_gzip deve ser listado antes de outros módulos cuja saída se pretende comprimir.
Localização original deste documento:
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.