mod_gzip · 12 min read · Sep 14, 2025

mod_gzip - sirviendo contenido comprimido por el servidor web Apache - Página 6

Autor: Michael Schröpl

La cantidad exacta de las funciones solicitadas debe ser descrita por directivas de configuración de Apache adicionales que se vuelven disponibles mediante la integración del módulo mod_gzip.

Una documentación realmente completa del efecto de estas directivas no está disponible en este momento; en general, asuma que

  • casi todo puede ser utilizado en cualquier entorno, es decir, - en el alcance completo del servidor,
  • en hosts virtuales separados,
  • en directorios o incluso
  • en archivos .htaccess y
  • básicamente se aplican los procedimientos estándar de sobrescritura de Apache - excepto por las directivas que especifican la selección de contenidos a ser comprimidos, donde las cosas se vuelven un poco más complicadas.

La configuración descrita a continuación realmente no está destinada a ser copiada ciegamente en su propia configuración - su intención es más bien darle una sensación sobre cuántas opciones se proporcionan. Y hay muchas opciones - al menos si ‘solo quiere obtener datos de salida comprimidos’ …

| carga | responsabilidades | precomprimido | burocracia | gestión de datos | tamaños de archivos | requisitos | filtros | codificación de transferencia | registro | proxies |

#######################################  
### Directivas de configuración de Apache ###  
###   para mod_gzip 1.3.26.1a        ###  
#######################################  


##########################  
### cargando el módulo ###  
##########################  
  
# ---------------------------------------------------------------------  
# cargar DLL / Win32:  
# LoadModule gzip_module modules/ApacheModuleGzip.dll  
#  
# cargar DSO / UNIX:  
# LoadModule gzip_module modules/mod_gzip.so  
#  
# (ninguno de los dos si el módulo ha sido compilado estáticamente;
#  el nombre de archivo exacto puede depender del método de compilación exacto utilizado  
#  para este módulo)
# ---------------------------------------------------------------------  
    

########################  


### responsabilidades ###  
########################  
  
# ---------------------------------------------------------------------  
# ¿usar mod_gzip en absoluto?  
  mod_gzip_on                   Yes  
# (puede habilitar especialmente mod_gzip dentro de la configuración central del servidor  
#  pero desactivarlo dentro de algunos directorios o hosts virtuales utilizando esta directiva.)  
# ---------------------------------------------------------------------  


######################################  
### archivos precomprimidos estáticamente ###  
######################################  
  
# ---------------------------------------------------------------------  
# ¿dejar que mod_gzip realice 'negociación de contenido parcial'?  
  mod_gzip_can_negotiate        Yes  
# (si esta opción está activa y se debe servir un archivo estático en com-  
#  primido, entonces mod_gzip buscará una versión estática precomprimida  
#  de este archivo con una extensión adicional definida - vea la siguiente  
#  directiva - que se entregaría con prioridad. Esto permitiría  
#  evitar comprimir repetidamente el mismo archivo estático y así  
#  ahorrar tiempo de CPU.  
#  No se proporciona caché dinámica de este archivo; actualmente el usuario  
#  es responsable de crear y actualizar el contenido del archivo precomprimido.
#  Desde la versión 1.3.19.2a, mod_gzip reconoce automáticamente si  
#  un archivo precomprimido estáticamente es más antiguo que su original  
#  descomprimido y en este caso servirá el contenido del archivo original  
#  en forma descomprimida - para servir datos correctos en lugar de  
#  obsoletos ...)
# ---------------------------------------------------------------------
# extensión (sufijo) para archivos precomprimidos estáticamente  
  mod_gzip_static_suffix        .gz  
  AddEncoding              gzip .gz  
# (efecto: vea la directiva anterior; esta cadena se adjuntará al  
#  nombre del archivo original.  
#  asegúrese de configurar la codificación 'gzip' para esta extensión también,  
#  porque mod_gzip no sirve el contenido en sí, sino que simplemente genera  
#  una redirección interna de Apache a esta URL. Por lo tanto, la configuración restante  
#  de Apache es responsable de establecer correctamente el encabezado 'Content-Encoding'  
#  ...  
#  antes de la versión 1.3.19.2a este valor no era configurable.)
# ---------------------------------------------------------------------
# actualizaciones automáticas para archivos precomprimidos estáticamente  
  mod_gzip_update_static        No  
# (si se establece en 'Sí', esta directiva (nueva en la versión 1.3.26.1a)  
#  haría que mod_gzip actualizara automáticamente una versión obsoleta de cualquier  
#  archivo precomprimido estáticamente durante la solicitud, es decir, comprimir el  
#  archivo originalmente solicitado y *sobrescribir* el archivo variante  
#  precomprimido con él!  
#  para cada actualización automática de este tipo, mod_gzip escribirá un mensaje  
#  de severidad 'notice' en el error_log de Apache.  
#  mientras lo hace, mod_gzip leerá directamente el contenido del archivo original.  
#  por lo tanto, este contenido *no puede* ser interpretado por ningún otro módulo de Apache  
#  durante la solicitud. esto podría *no ser* lo que desea - con suerte  
#  será lo que la mayoría de los usuarios quieren, porque funciona *rápido* de esta manera.  
#  use esta configuración con mucho cuidado, y asegúrese de que no  
#  cause inadvertidamente que archivos valiosos dentro del árbol de URL sean sobrescritos.  
#  esta *no es* una característica para ser utilizada en servidores de alojamiento masivo, especialmente  
#  porque mod_gzip podría experimentar problemas de control de acceso allí - el  
#  userid bajo el cual se ejecutan los procesos de Apache necesita tener acceso de escritura  
#  a los archivos precomprimidos de todos los usuarios, lo que puede no ser automáticamente  
#  el caso.)  
# [¿manejo de errores de mod_gzip en esta situación??? ¿qué se servirá?]
# ---------------------------------------------------------------------  


###################  
### burocracia ###  
###################  
  
# ---------------------------------------------------------------------  
# mostrar estado para mod_gzip  
  mod_gzip_command_version      '/mod_gzip_status'  
# (define una URL para mostrar el estado de mod_gzip; puede ser especificada  
# individualmente para cada instalación y protegida contra el acceso a través de  
#  sección por razones de privacidad)  
# ---------------------------------------------------------------------  
# La visualización del estado se verá así:  
#       mod_gzip está disponible...  
#       mod_gzip_version = 1.3.26.1a  
#       mod_gzip_on = Yes/No  
# y así proporcionará información sobre  
# - mod_gzip está instalado en el servidor y funcionando correctamente,  
# - qué versión ha sido instalada y  
# - si mod_gzip ha sido configurado como 'activo' para esta ubicación  
#   (-> mod_gzip_on)  
# ---------------------------------------------------------------------  


#######################  
### gestión de datos ###  
#######################  
  
# ---------------------------------------------------------------------  
# Directorio de trabajo para archivos temporales y la caché de compresión  
# si no se especifica, se utilizan los siguientes valores predeterminados:  
# [Win32=c:\temp], [UNIX=/tmp]  
# mod_gzip_temp_dir             /tmp  
# (Este directorio debe existir ya y el userid que se utiliza para  
#  ejecutar el servidor Apache debe tener acceso de lectura y escritura a este  
#  directorio.  
#  A diferencia de otras directivas de Apache, aquí debe especificarse un nombre de ruta  
#  absoluto; un valor relativo no será interpretado en relación con ServerRoot.  
#  Esta ruta no debe terminar con '/'.  
#  Para un rendimiento máximo, este directorio debe estar ubicado en un disco RAM,  
#  si el sistema de archivos no se está almacenando en caché de manera eficiente  
# ---------------------------------------------------------------------  
# Guardar archivos de trabajo temporales [Sí, No]  
  mod_gzip_keep_workfiles       No  
# (un archivo por solicitud HTTP - ¡establezca en 'sí' solo para fines de depuración!)  
# ---------------------------------------------------------------------  


##################  
### tamaños de archivos ###  
##################  
  
# ---------------------------------------------------------------------  
# tamaño mínimo (en bytes) para archivos a ser comprimidos  
  mod_gzip_minimum_file_size    500  
# (para archivos muy pequeños, la compresión producirá solo pequeñas ganancias  
#  absolutas [aún ahorrará alrededor del 50% del contenido, pero algunos bytes  
#  adicionales de encabezados HTTP y TCP siempre permanecerán descomprimidos],  
#  pero aún producirá carga de CPU tanto para el cliente como para el servidor.  
#  mod_gzip establecerá automáticamente valores más pequeños que 300 bytes para  
#  esta directiva exactamente a este valor 300.)  
# ---------------------------------------------------------------------  
# tamaño máximo (en bytes) para archivos a ser comprimidos  
  mod_gzip_maximum_file_size    500000  
# (para archivos muy grandes, la compresión puede eventualmente tardar bastante  
#  y así retrasar el inicio de la transmisión.  
#  Además, una limitación en este punto evita que el servidor  
#  produzca salida de tamaño ilimitado en caso de algún bucle infinito  
#  dentro de un script CGI - o incluso intentar comprimir datos de transmisión -  
#  lo que podría causar la creación de un archivo temporal de  
#  cualquier tamaño e incluso llenar todo el disco duro.  
#  Por otro lado, la compresión tendrá un efecto subjetivo mucho más perceptible  
#  para archivos grandes ... así que asegúrese de ajustar esto  
#  de acuerdo con sus requisitos.)  
# ---------------------------------------------------------------------  
# tamaño máximo (en bytes) para archivos a ser comprimidos en memoria  
  mod_gzip_maximum_inmem_size   60000  
# (archivos más grandes serán comprimidos en el directorio de archivos temporales; adapte  
#  este valor a la memoria principal disponible de su servidor.  
#  En mod_gzip 1.3.19.x, valores más grandes serán automáticamente limitados a  
#  60000 porque se dice que algunos sistemas operativos tienen problemas  
#  al asignar más de 64 kb de memoria a la vez.  
# ---------------------------------------------------------------------  


####################  
### requisitos ###  
####################  
  
# (vea el capítulo sobre caché para problemas al usar estas directivas.)  
# ---------------------------------------------------------------------  
# Versión HTTP requerida del cliente  
# Valores posibles: 1000 = HTTP/1.0, 1001 = HTTP/1.1, ...  
# Esta directiva utiliza los mismos valores numéricos de protocolo que Apache hace  
# internamente  
  mod_gzip_min_http             1000  
# (Al usar esta directiva, puede excluir navegadores antiguos, motores de búsqueda  
#  etc. del procedimiento de compresión: si el agente de usuario no  
#  se declara capaz de entender al menos el nivel HTTP  
#  especificado aquí, solo se entregarán datos descomprimidos - sin importar  
#  qué más afirme ser capaz de. El valor de '1001' excluirá especialmente  
#  Netscape 4.x. y muchos servidores proxy.)  
# ---------------------------------------------------------------------
# Métodos HTTP a ser manejados  
# Valores posibles: 'GET', 'POST' o una lista de ambos valores.  
  mod_gzip_handle_methods        GET POST  
# (Al usar esta directiva, puede excluir particularmente las solicitudes POST  
#  del procedimiento de compresión. Hay casos conocidos donde el  
#  manejo de estas solicitudes por versiones anteriores de mod_gzip podría causar  
#  problemas.  
#  Antes de la versión 1.3.19.2a, este valor no era configurable.)
# ---------------------------------------------------------------------  


###############  
### filtros ###  
###############  
  
# ---------------------------------------------------------------------  
# ¿qué archivos deben ser comprimidos?  
#  
# El orden de procesamiento durante cada una de ambas fases no es importante,  
# pero para activar la compresión del contenido de una solicitud, esta solicitud  
# a) *debe coincidir al menos con una regla de inclusión en cada una de ambas fases* y  
# b) *no debe coincidir con una regla de exclusión en ninguna de ambas fases.*  
# Estas reglas no son mínimas, están destinadas a servir solo como ejemplo.  
#
# Tenga en cuenta que todos los valores de parámetro de las directivas en esta sección son  
# evaluados como expresiones regulares, y *no* de manera sensible a mayúsculas.
# ---------------------------------------------------------------------  
# fase 1: (reqheader, uri, archivo, controlador)  
# ========================================  
# NO:   navegadores rotos especiales que solicitan contenido gzipped  
#       pero luego no pueden manejarlo correctamente  
  mod_gzip_item_exclude         reqheader  "User-agent: Mozilla/4.0[678]"
# Desde la versión 1.3.19.2a, *desaconsejo el uso de filtros*  
# *para Agentes de usuario*, ya que esto causará que se generen encabezados HTTP 'Vary: User-Agent',  
# dificultando así la vida a los servidores proxy.
#  
# JA:   Documentos HTML  
  mod_gzip_item_include         file       \.html$  
#  
# NO:   incluir archivos / JavaScript y CSS (debido a errores de Netscape4)  
  mod_gzip_item_exclude         file       \.js$  
  mod_gzip_item_exclude         file       \.css$  
#  
# SÍ:  scripts CGI  
  mod_gzip_item_include         file       \.pl$  
  mod_gzip_item_include         handler    ^cgi-script$  
#  
# fase 2: (mime, rspheader)  
# ===========================  
# SÍ:  archivos HTML normales, archivos de texto normales, listados de directorios de Apache  
  mod_gzip_item_include         mime       ^text/html$  
  mod_gzip_item_include         mime       ^text/plain$  
  mod_gzip_item_include         mime       ^httpd/unix-directory$  
#  
# NO:   imágenes (GIF, etc., rara vez ahorrarán algo)  
  mod_gzip_item_exclude         mime       ^image/  
# ---------------------------------------------------------------------  
# De hecho, mod_gzip solo está verificando los primeros 4 caracteres del 1er  
# operando (en caso de uri incluso solo los primeros 2 caracteres, para  
# permitir valores como url).  
# ---------------------------------------------------------------------  
# La tabla para reglas de mod_gzip_item (incluir y excluir) no puede contener  
# más de 256 entradas; cuando este número se excede, mod_gzip  
# mostrará el mensaje "mod_gzip: ERROR: El índice de elementos está lleno"  
# y reportará un error de configuración al servidor Apache.  
# ---------------------------------------------------------------------  
# Los valores de directiva descritos aquí están destinados a describir las solicitudes  
# elegidas para compresión *más exactamente*.  
# Especialmente para las reglas mime, debe dejarse claro que el encabezado HTTP  
# 'Content-Type' (que será verificado por mod_gzip para esta regla)  
# en algunos casos puede contener no solo un tipo MIME, sino además una  
# descripción de conjunto de caracteres (charset) también.  
# Si este es el caso para las solicitudes a ser manejadas, entonces necesita  
# eliminar el carácter '$' al final del valor correspondiente para que ahora  
# solo se pruebe el prefijo de este valor para coincidencias.  
# ---------------------------------------------------------------------  


##########################  
### codificaciones de transferencia ###  
##########################  
  
# ---------------------------------------------------------------------  
# Permitir que mod_gzip elimine el encabezado HTTP  
#    'Transfer-encoding: chunked'  
# y unir los fragmentos en un solo paquete (compresible)  
  mod_gzip_dechunk              Yes  
# (esto es necesario para manejar varios tipos de contenido generados dinámicamente,  
# especialmente para páginas CGI y SSI, pero también para páginas producidas  
# por algunos intérpretes de Servlets de Java.  
# ---------------------------------------------------------------------  


###############  
### registro ###  
###############  
  
# ---------------------------------------------------------------------  
# Formato de registro extendido (para probar el efecto de compresión)  
  LogFormat                     "%h %l %u %t \"%V %r\" %  
# ---------------------------------------------------------------------  
# Crear archivo de registro adicional  
  CustomLog                     logs/mod_gzip.log common_with_mod_gzip_info2  
# (seguramente puede redefinir el formato de su archivo de registro normal, pero puede  
#  mantener su formato compatible con el estándar para la evaluación por herramientas de  
#  análisis web estándar. Así que simplemente creamos otro archivo de registro.)  
# ---------------------------------------------------------------------  
# Cálculo del volumen de los archivos entregados dentro del access_log de Apache:  
# contar el tamaño del encabezado HTTP (en bytes) como parte del tamaño total de salida  
  mod_gzip_add_header_count     Yes  
# (Esto será más que el contenido puro del documento, pero describirá más  
#  realísticamente el tráfico total de salida de la solicitud HTTP)  
# ---------------------------------------------------------------------

###############  
### proxies ###  
###############  
  
# ---------------------------------------------------------------------  
# enviando un encabezado HTTP 'Vary'  
  mod_gzip_send_vary            On  
# (vea el capítulo sobre caché para esta directiva.)  
#  *¡no cambie esto a menos que sepa absolutamente lo que está haciendo!*  
# ---------------------------------------------------------------------
  

Orden al cargar módulos

Al agregar este módulo dinámicamente, debe tener en cuenta que mod_gzip debe ser especificado como el último de varias directivas LoadModule a utilizar.

Esto se debe a que Apache construirá internamente una pila a partir de las directivas LoadModule y luego la evaluará en orden inverso.

mod_gzip se engancha en la rutina type_checker de Apache; pero solo el primero de todos los módulos que se declaran responsables del manejo de una solicitud (por ejemplo, ColdFusion y SSL intentarán hacerlo) será realmente activado por Apache. Así que mod_gzip debe ser activado antes de aquellos módulos cuya salida desea redirigir hacia sí mismo y luego postprocesar - siempre que estos módulos intenten usar la misma interfaz type_checker … si no lo hacen, entonces puede funcionar independientemente de este orden de directivas.

Durante el mensaje de inicio de Apache (que se puede encontrar, por ejemplo, dentro del error log de Apache), los módulos que tienen especificaciones de versión individuales pueden ser listados exactamente en el orden en que aparecen dentro de la cadena de módulos; allí mod_gzip debe ser listado antes de otros módulos cuya salida se pretende comprimir.

Ubicación original de este documento:

http://www.schroepl.net/projekte/mod_gzip/config.htm

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.