Apache mod_gzip · 12 min read · Sep 14, 2025
mod_gzip - servir du contenu compressé par le serveur web Apache - Page 6
Auteur : Michael Schröpl
La quantité exacte des fonctions demandées doit être décrite par des directives de configuration Apache supplémentaires qui deviennent disponibles grâce à l’intégration du module mod_gzip.
Une documentation vraiment complète de l’effet de ces directives n’est pas disponible pour le moment ; en général, supposez que
- presque tout peut être utilisé dans chaque environnement, c’est-à-dire - dans l’ensemble du serveur,
- dans des hôtes virtuels séparés,
- dans des répertoires ou même
- dans des fichiers .htaccess et
- fondamentalement, les procédures de remplacement standard d’Apache s’appliquent - sauf pour les directives spécifiant la sélection des contenus à compresser, où les choses deviennent un peu plus compliquées.
La configuration décrite ci-dessous n’est vraiment pas destinée à être copiée aveuglément dans votre propre configuration - son intention est plutôt de vous donner une idée du nombre d’options fournies. Et il y a beaucoup d’options - au moins si vous ‘voulez juste obtenir des données de sortie compressées’ …
| chargement | responsabilités | précompressé | bureaucratie | gestion des données | tailles de fichiers | exigences | filtres | encodage de transfert | journalisation | proxys |
#######################################
### Directives de configuration Apache ###
### pour mod_gzip 1.3.26.1a ###
#######################################
##########################
### chargement du module ###
##########################
# ---------------------------------------------------------------------
# charger DLL / Win32 :
# LoadModule gzip_module modules/ApacheModuleGzip.dll
#
# charger DSO / UNIX :
# LoadModule gzip_module modules/mod_gzip.so
#
# (aucun des deux si le module a été compilé statiquement ; # le nom de fichier exact peut dépendre de la méthode de compilation exacte utilisée
# pour ce module)# ---------------------------------------------------------------------
########################
### responsabilités ###
########################
# ---------------------------------------------------------------------
# utiliser mod_gzip du tout ?
mod_gzip_on Oui
# (vous pouvez notamment activer mod_gzip dans la configuration centrale du serveur
# mais le désactiver dans certains répertoires ou hôtes virtuels
# en utilisant cette directive.)
# ---------------------------------------------------------------------
######################################
### fichiers précompressés statiquement ###
######################################
# ---------------------------------------------------------------------
# laisser mod_gzip effectuer une 'négociation de contenu partiel' ?
mod_gzip_can_negotiate Oui
# (si cette option est active et qu'un fichier statique doit être servi en
# compressé, alors mod_gzip recherchera une version précompressée statique
# de ce fichier avec une extension supplémentaire définie - voir la directive suivante -
# qui serait livrée en priorité. Cela permettrait
# d'éviter de compresser à plusieurs reprises le même fichier statique et donc
# d'économiser du temps CPU.
# Aucun cache dynamique de ce fichier n'est fourni ; actuellement, l'utilisateur
# lui-même est responsable de la création et de la mise à jour du contenu du fichier précompressé.# À partir de la version 1.3.19.2a, mod_gzip reconnaît automatiquement si
# un fichier précompressé statiquement est plus ancien que son original non compressé
# et dans ce cas, servira le contenu du fichier original
# sous forme non compressée - afin de servir plutôt des données correctes que
# des données obsolètes ...)# ---------------------------------------------------------------------# extension (suffixe) pour les fichiers précompressés statiquement
mod_gzip_static_suffix .gz
AddEncoding gzip .gz
# (effet : voir la directive précédente ; cette chaîne sera ajoutée au
# nom du fichier original.
# assurez-vous de configurer l'encodage 'gzip' pour cette extension également,
# car mod_gzip ne sert pas le contenu lui-même mais génère simplement
# une redirection interne d'Apache vers cette URL. Par conséquent, la configuration
# Apache restante est responsable de la définition de l'en-tête 'Content-Encoding'
# correctement ...
# avant la version 1.3.19.2a, cette valeur n'était pas configurable.)# ---------------------------------------------------------------------# mises à jour automatiques pour les fichiers précompressés statiquement
mod_gzip_update_static Non
# (si défini sur 'Oui', cette directive (nouvelle dans la version 1.3.26.1a)
# entraînerait mod_gzip à mettre automatiquement à jour une version obsolète de tout
# fichier précompressé statiquement pendant la demande, c'est-à-dire compresser le
# fichier demandé à l'origine et *écraser* le fichier variant précompressé
# avec celui-ci !
# pour chaque mise à jour automatique de ce type, mod_gzip écrira un message
# de gravité 'notice' dans le journal d'erreurs d'Apache.
# tout en faisant cela, mod_gzip lira directement le contenu du fichier original.
# par conséquent, ce contenu *ne peut pas* être interprété par un autre module Apache
# pendant la demande. cela pourrait éventuellement *ne pas* être ce que vous voulez - espérons
# que ce sera ce que la plupart des utilisateurs veulent, car cela fonctionne *rapidement* de cette manière.
# utilisez cette configuration avec beaucoup de précautions, et assurez-vous que vous ne
# causez pas accidentellement l'écrasement de fichiers précieux dans l'arborescence URL.
# ce *n'est pas* une fonctionnalité à utiliser pour des serveurs d'hébergement de masse, en particulier
# parce que mod_gzip pourrait rencontrer des problèmes de contrôle d'accès là-bas - le
# userid sous lequel les processus Apache s'exécutent doit avoir un accès en écriture
# aux fichiers précompressés de tous les utilisateurs, ce qui peut ne pas être automatiquement le
# cas.)
# [gestion des erreurs mod_gzip dans cette situation??? que sera servi?]# ---------------------------------------------------------------------
###################
### bureaucratie ###
###################
# ---------------------------------------------------------------------
# afficher l'état de mod_gzip
mod_gzip_command_version '/mod_gzip_status'
# (définit une URL pour afficher l'état de mod_gzip ; peut être spécifiée
# individuellement pour chaque installation et protégée contre l'accès via
# section pour des raisons de confidentialité)
# ---------------------------------------------------------------------
# L'affichage de l'état ressemblera à ceci :
# mod_gzip est disponible...
# mod_gzip_version = 1.3.26.1a
# mod_gzip_on = Oui/Non
# et fournira ainsi des informations sur
# - mod_gzip étant installé sur le serveur et fonctionnant correctement,
# - quelle version a été installée et
# - si mod_gzip a été défini comme 'actif' pour cet emplacement
# (-> mod_gzip_on)
# ---------------------------------------------------------------------
#######################
### gestion des données ###
#######################
# ---------------------------------------------------------------------
# Répertoire de travail pour les fichiers temporaires et le cache de compression
# si non spécifié, les valeurs par défaut suivantes sont utilisées :
# [Win32=c:\temp], [UNIX=/tmp]
# mod_gzip_temp_dir /tmp
# (Ce répertoire doit déjà exister et le userid utilisé pour
# exécuter le serveur Apache doit avoir un accès en lecture et en écriture à ce
# répertoire.
# Contrairement à d'autres directives Apache, un nom de chemin absolu doit être spécifié
# ici ; une valeur relative ne sera pas interprétée relativement à ServerRoot.
# Ce chemin ne doit PAS être terminé par '/'.
# Pour des performances maximales, ce répertoire devrait être situé sur un disque RAM,
# si le système de fichiers n'est pas déjà mis en cache efficacement
# ---------------------------------------------------------------------
# Enregistrer des fichiers de travail temporaires [Oui, Non]
mod_gzip_keep_workfiles Non
# (un fichier par requête HTTP - défini sur 'oui' uniquement à des fins de débogage !)
# ---------------------------------------------------------------------
##################
### tailles de fichiers ###
##################
# ---------------------------------------------------------------------
# taille minimale (en octets) pour les fichiers à compresser
mod_gzip_minimum_file_size 500
# (pour les fichiers très petits, la compression ne produira que de petits gains absolus
# [vous économiserez toujours environ 50 % du contenu, mais quelques octets supplémentaires
# de 500 octets d'en-têtes HTTP et TCP resteront toujours non compressés],
# mais produira toujours une charge CPU pour le client et le serveur.
# mod_gzip définira automatiquement des valeurs inférieures à 300 octets pour
# cette directive à exactement cette valeur 300.)
# ---------------------------------------------------------------------
# taille maximale (en octets) pour les fichiers à compresser
mod_gzip_maximum_file_size 500000
# (pour les fichiers très volumineux, la compression peut éventuellement prendre assez longtemps et
# retarder le début de la transmission.
# De plus, une limitation à ce stade empêche le serveur de
# produire une sortie de taille illimitée en cas de boucle infinie
# à l'intérieur d'un script CGI - ou même d'essayer de compresser des données en streaming -
# ce qui pourrait autrement provoquer la création d'un fichier temporaire de
# n'importe quelle taille et même remplir tout le disque dur.
# D'autre part, la compression aura un effet subjectif beaucoup plus perceptible pour les fichiers volumineux ... donc assurez-vous de peaufiner cela
# selon vos exigences.)
# ---------------------------------------------------------------------
# taille maximale (en octets) pour les fichiers à compresser en mémoire
mod_gzip_maximum_inmem_size 60000
# (les fichiers plus volumineux seront compressés dans le répertoire de fichiers temporaires ; adaptez
# cette valeur à la mémoire principale disponible de votre serveur.
# Dans mod_gzip 1.3.19.x, des valeurs plus grandes seront automatiquement limitées à
# 60000 car certains systèmes d'exploitation sont censés avoir des problèmes
# pour allouer plus de 64 Ko de mémoire à la fois.
# ---------------------------------------------------------------------
####################
### exigences ###
####################
# (voir le chapitre sur la mise en cache pour les problèmes lors de l'utilisation de ces directives.)
# ---------------------------------------------------------------------
# Version HTTP requise du client
# Valeurs possibles : 1000 = HTTP/1.0, 1001 = HTTP/1.1, ...
# Cette directive utilise les mêmes valeurs de protocole numériques que Apache le fait
# en interne
mod_gzip_min_http 1000
# (En utilisant cette directive, vous pouvez exclure les anciens navigateurs, moteurs de recherche
# etc. de la procédure de compression : si l'agent utilisateur ne
# se déclare pas capable de comprendre au moins le niveau HTTP
# spécifié ici, seules des données non compressées seront livrées - peu importe
# ce qu'il prétend être capable de faire. La valeur de '1001' exclura particulièrement
# Netscape 4.x. et de nombreux serveurs proxy.)
# --------------------------------------------------------------------- # Méthodes HTTP à traiter
# Valeurs possibles : 'GET', 'POST' ou une liste des deux valeurs.
mod_gzip_handle_methods GET POST
# (En utilisant cette directive, vous pouvez particulièrement exclure les requêtes POST
# de la procédure de compression. Il existe des cas connus où le
# traitement de ces requêtes par les versions précédentes de mod_gzip pourrait causer
# des problèmes.
# Avant la version 1.3.19.2a, cette valeur n'était pas configurable.)# ---------------------------------------------------------------------
###############
### filtres ###
###############
# ---------------------------------------------------------------------
# quels fichiers doivent être compressés ?
#
# L'ordre de traitement pendant chacune des deux phases n'est pas important,
# mais pour déclencher la compression du contenu d'une requête, cette requête
# a) *doit correspondre à au moins une règle d'inclusion dans chacune des deux phases* et
# b) *ne doit pas correspondre à une règle d'exclusion dans l'une des deux phases.*
# Ces règles ne sont pas minimales, elles sont destinées à servir d'exemple uniquement.
## Notez que toutes les valeurs de paramètres des directives de cette section sont
# évaluées comme des expressions régulières, et *non* de manière sensible à la casse.# ---------------------------------------------------------------------
# phase 1 : (reqheader, uri, fichier, gestionnaire)
# ========================================
# NON : navigateurs spéciaux cassés qui demandent du contenu gzippé
# mais qui ne sont ensuite pas capables de le gérer correctement
mod_gzip_item_exclude reqheader "User-agent: Mozilla/4.0[678]"
# À partir de la version 1.3.19.2a, je *déconseille d'utiliser des filtres*
# *pour les agents utilisateurs*, car cela entraînera la génération d'en-têtes HTTP 'Vary: User-Agent'
# rendant la vie plus difficile pour les serveurs proxy.#
# OUI : documents HTML
mod_gzip_item_include file \.html$
#
# NON : inclure des fichiers / JavaScript & CSS (en raison des bugs de Netscape4)
mod_gzip_item_exclude file \.js$
mod_gzip_item_exclude file \.css$
#
# OUI : scripts CGI
mod_gzip_item_include file \.pl$
mod_gzip_item_include handler ^cgi-script$
#
# phase 2 : (mime, rspheader)
# ===========================
# OUI : fichiers HTML normaux, fichiers texte normaux, listes de répertoires Apache
mod_gzip_item_include mime ^text/html$
mod_gzip_item_include mime ^text/plain$
mod_gzip_item_include mime ^httpd/unix-directory$
#
# NON : images (GIF, etc., ne feront presque jamais économiser quoi que ce soit)
mod_gzip_item_exclude mime ^image/
# ---------------------------------------------------------------------
# En fait, mod_gzip ne vérifie que les 4 premiers caractères du 1er
# opérande (dans le cas de uri, même les 2 premiers caractères uniquement, afin de
# permettre des valeurs comme url).
# ---------------------------------------------------------------------
# La table pour les règles mod_gzip_item (inclusion et exclusion) ne peut pas contenir
# plus de 256 entrées ; lorsque ce nombre est dépassé, mod_gzip affichera
# le message "mod_gzip : ERREUR : L'index des éléments est plein"
# et signalera une erreur de configuration au serveur Apache.
# ---------------------------------------------------------------------
# Les valeurs de directive décrites ici sont destinées à décrire les requêtes
# choisies pour compression *le plus précisément possible*.
# Surtout pour les règles mime, il faut préciser que l'en-tête HTTP
# 'Content-Type' (qui sera vérifié par mod_gzip pour cette règle)
# dans certains cas peut contenir non seulement un type MIME mais également une
# description de jeu de caractères (charset).
# Si c'est le cas pour les requêtes à traiter, alors vous devez
# retirer le caractère '$' à la fin de la valeur correspondante afin que maintenant
# seul le préfixe de cette valeur soit testé pour correspondance.
# ---------------------------------------------------------------------
##########################
### encodages de transfert ###
##########################
# ---------------------------------------------------------------------
# Autoriser mod_gzip à éliminer l'en-tête HTTP
# 'Transfer-encoding: chunked'
# et à joindre les morceaux en un seul paquet (compressible)
mod_gzip_dechunk Oui
# (cela est requis pour le traitement de plusieurs types de contenus générés dynamiquement,
# en particulier pour les pages CGI et SSI, mais aussi pour les pages produites
# par certains interprètes de servlets Java.
# ---------------------------------------------------------------------
###############
### journalisation ###
###############
# ---------------------------------------------------------------------
# Format de journal étendu (pour tester l'effet de compression)
LogFormat "%h %l %u %t \"%V %r\" %
# ---------------------------------------------------------------------
# Créer un fichier journal supplémentaire
CustomLog logs/mod_gzip.log common_with_mod_gzip_info2
# (vous pouvez certainement redéfinir le format de votre fichier journal normal, mais vous pouvez bien
# garder son format standard compatible pour l'évaluation par des outils d'analyse web standard. Donc, nous créons simplement un autre fichier journal.)
# ---------------------------------------------------------------------
# Calcul du volume des fichiers livrés dans le journal d'accès Apache :
# compter la taille de l'en-tête HTTP (en octets) comme partie de la taille totale de sortie
mod_gzip_add_header_count Oui
# (Cela sera plus que le contenu pur du document, mais cela décrira plus
# réalistiquement le trafic total de sortie de la requête HTTP)
# ---------------------------------------------------------------------
###############
### proxys ###
###############
# ---------------------------------------------------------------------
# envoyer un en-tête HTTP 'Vary'
mod_gzip_send_vary On
# (voir le chapitre sur la mise en cache pour cette directive.)
# *ne changez pas cela à moins que vous ne sachiez absolument ce que vous faites !*
# ---------------------------------------------------------------------
Ordre lors du chargement des modules
Lors de l’ajout de ce module dynamiquement, vous devez garder à l’esprit que mod_gzip doit être spécifié comme dernier des plusieurs LoadModule directives à utiliser.
C’est parce qu’Apache construira en interne une pile à partir des LoadModule directives et l’évaluera plus tard dans l’ordre inverse.
mod_gzip s’accroche à la routine type_checker d’Apache ; mais seul le premier de tous les modules se déclarant responsables du traitement d’une requête (par exemple, ColdFusion et SSL essaieront de le faire) sera réellement activé par Apache. Donc, mod_gzip doit être activé avant ces modules dont la sortie qu’il souhaite rediriger vers lui-même et ensuite post-traiter - tant que ces modules essaient d’utiliser la même interface type_checker … s’ils ne le font pas, alors cela peut fonctionner indépendamment de cet ordre de directives.
Lors du message de démarrage d’Apache (qui peut être trouvé par exemple dans le journal d’erreurs d’Apache), les modules ayant des spécifications de version individuelles peuvent être listés exactement dans l’ordre dans lequel ils apparaissent dans la chaîne de modules ; là, mod_gzip doit être listé avant d’autres modules dont la sortie est destinée à être compressée.
Emplacement original de ce document : http://www.schroepl.net/projekte/mod_gzip/config.htm
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.