<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_deflate

Langues Disponibles:  en  |  fr  |  ja  |  ko 

Description:Comprime le contenu avant de le servir au client
Statut:Extension
Identificateur�de�Module:deflate_module
Fichier�Source:mod_deflate.c

Sommaire

Le module mod_deflate impl�mente le filtre de sortie DEFLATE qui permet de comprimer la sortie de votre serveur avant de l'envoyer au client sur le r�seau.

Directives

Sujets

Voir aussi

top

Exemples de configurations

Compression et TLS

Certaines applications web sont vuln�rables aux attaques visant le vol d'information lorsqu'une connexion TLS transmet des donn�es compress�es par deflate. Pour plus de d�tails, �tudiez les attaques de la famille "BREACH".

Voici une configuration simple qui comprime les contenus � base de texte courants.

Ne comprime que certains types de documents

AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
top

Activation de la compression

Compression et TLS

Certaines applications web sont vuln�rables aux attaques pour vol d'information lorsque la connexion TLS transmet des donn�es compress�es par deflate. Pour plus d'informations, voir en d�tails la famille d'attaques de type "BREACH".

Compression de la sortie

La compression est impl�ment�e par le filtre DEFLATE. La directive suivante active la compression des documents dans le conteneur o� elle est plac�e :

SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip

Si vous voulez limiter la compression � certains types MIME particuliers, vous pouvez utiliser la directive AddOutputFilterByType. Voici un exemple o� la compression n'est activ�e que pour les fichiers html de la documentation d'Apache :

<Directory "/your-server-root/manual">
    AddOutputFilterByType DEFLATE text/html
</Directory>

Note

Le filtre DEFLATE est toujours ins�r� apr�s les filtres RESOURCE comme PHP ou SSI. Il n'affecte jamais les sous-requ�tes internes.

Note

La variable d'environnement force-gzip, d�finie � l'aide de la directive SetEnv, permet d'ignorer la configuration de votre navigateur quant aux codages accept�s, et d'envoyer sans condition une sortie comprim�e.

D�compression de la sortie

Le module mod_deflate fournit aussi un filtre permettant de d�comprimer un corps de r�ponse comprim� par gzip. Pour activer cette fonctionnalit�, vous devez ins�rer le filtre INFLATE dans la cha�ne de filtrage en sortie via la directive SetOutputFilter ou AddOutputFilter, comme dans l'exemple suivant :

<Location /dav-area>
    ProxyPass http://example.com/
    SetOutputFilter INFLATE
</Location>

Dans cet exemple, les sorties comprim�es par gzip en provenance de example.com seront d�comprim�es afin de pouvoir �tre �ventuellement trait�es par d'autres filtres.

D�compression de l'entr�e

Le module mod_deflate fournit �galement un filtre permettant de d�comprimer un corps de requ�te comprim� par gzip. Pour activer cette fonctionnalit�, vous devez ins�rer le filtre DEFLATE dans la cha�ne de filtrage en entr�e via la directive SetInputFilter ou AddInputFilter, comme dans l'exemple suivant :

<Location /dav-area>
    SetInputFilter DEFLATE
</Location>

D�sormais, si une requ�te contient un en-t�te Content-Encoding: gzip, son corps sera automatiquement d�comprim�. Peu de navigateurs sont actuellement en mesure de comprimer les corps de requ�tes. Cependant, certaines applications sp�cialis�es supportent les requ�tes comprim�es, comme par exemple certains clients WebDAV.

Note � propos de l'en-t�te Content-Length

Si vous �valuez vous-m�me la taille du corps de requ�te, ne faites pas confiance � l'en-t�te Content-Length! L'en-t�te Content-Length indique la longueur des donn�es en provenance du client, et non la quantit� d'octets que repr�sente le flux de donn�es d�compress�.

top

Prise en compte des serveurs mandataires

Le module mod_deflate envoie un en-t�te de r�ponse HTTP Vary: Accept-Encoding pour avertir les mandataires qu'une r�ponse enregistr�e dans le cache ne doit �tre envoy�e qu'aux clients qui ont envoy� l'en-t�te de requ�te Accept-Encoding appropri�. Ceci permet d'�viter l'envoi d'un contenu comprim� � un client qui ne sera pas en mesure de l'interpr�ter.

Si vous avez d�fini des exclusions sp�cifiques d�pendant, par exemple, de l'en-t�te User-Agent, vous devez ajouter manuellement des donn�es � l'en-t�te Vary afin d'informer les mandataires des restrictions suppl�mentaires. Par exemple, dans la configuration classique o� l'addition du filtre DEFLATE d�pend du contenu de l'en-t�te User-Agent, vous devez sp�cifier :

Header append Vary User-Agent

Si votre d�cision de comprimer le contenu d�pend d'autres informations que celles contenues dans les en-t�tes de la requ�te (par exemple la version HTTP), vous devez attribuer � l'en-t�te Vary la valeur *, ce qui permet d'emp�cher les mandataires compatibles de tout mettre en cache.

Exemple

Header set Vary *
top

DeflateBufferSize Directive

Description:Taille du fragment que zlib devra comprimer en une seule fois
Syntaxe:DeflateBufferSize valeur
D�faut:DeflateBufferSize 8096
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_deflate

La directive DeflateBufferSize permet de sp�cifier la taille en octets du fragment que zlib devra comprimer en une seule fois.

top

DeflateCompressionLevel Directive

Description:Le niveau de compression que nous appliquons � la sortie
Syntaxe:DeflateCompressionLevel valeur
D�faut:La valeur par d�faut de zlib
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_deflate

La directive DeflateCompressionLevel permet de sp�cifier le niveau de compression � utiliser ; plus grande est la valeur, meilleure sera la compression, mais plus grand sera aussi le temps CPU n�cessaire pour effectuer le traitement.

La valeur doit �tre comprise entre 1 (compression minimale) et 9 (compression maximale).

top

DeflateFilterNote Directive

Description:Enregistre le taux de compression sous la forme d'une note � des fins de journalisation
Syntaxe:DeflateFilterNote [type] nom de la note
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_deflate

La directive DeflateFilterNote permet de sp�cifier qu'une note � propos du taux de compression doit �tre attach�e � la requ�te. Le nom de la note est pass� sous la forme d'un argument de la directive. Vous pouvez utiliser cette note � des fins statistiques en enregistrant sa valeur dans votre journal des acc�s.

Exemple

      DeflateFilterNote ratio
    
      LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate
      CustomLog logs/deflate_log deflate

Pour extraire des informations plus pr�cises de vos journaux, vous pouvez utiliser l'argument type pour sp�cifier le type de donn�es de la note enregistr�e dans le journal. type peut prendre une des valeurs suivantes :

Input
Enregistre dans la note la taille en octets du flux en entr�e du filtre.
Output
Enregistre dans la note la taille en octets du flux en sortie du filtre.
Ratio
Enregistre le taux de compression (sortie/entr�e * 100) dans la note. Il s'agit de la valeur par d�faut si l'argument type est omis.

Vous pouvez donc configurer votre journalisation de la mani�re suivante :

Journalisation d�taill�e

DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio

LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog logs/deflate_log deflate

Voir aussi

top

DeflateInflateLimitRequestBody Directive

Description:Taille maximale des corps de requ�te d�compress�s
Syntaxe:DeflateInflateLimitRequestBodyvalue
D�faut:Aucune limite, mais LimitRequestBody s'applique apr�s la compression
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
Statut:Extension
Module:mod_deflate
Compatibilit�:Disponible � partir de la version 2.4.10 du serveur HTTP Apache

La directive DeflateInflateLimitRequestBody permet de sp�cifier la taille maximale d'un corps de requ�te d�compress�. Si elle n'est pas d�finie, c'est la valeur de la directive LimitRequestBody qui s'applique au corps de requ�te d�compress�.

top

DeflateInflateRatioBurst Directive

Description:Nombre maximal de fois que le ratio de d�compression d'un corps de requ�te peut �tre d�pass�
Syntaxe:DeflateInflateRatioBurst value
D�faut:3
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
Statut:Extension
Module:mod_deflate
Compatibilit�:Disponible � partir de la version 2.4.10 du serveur HTTP Apache

La directive DeflateInflateRatioBurst permet de sp�cifier le nombre maximal de fois que la valeur de la directive DeflateInflateRatioLimit peut �tre d�pass� avant l'arr�t du traitement de la requ�te.

top

DeflateInflateRatioLimit Directive

Description:Ratio de d�compression maximum pour les corps de requ�tes
Syntaxe:DeflateInflateRatioLimit value
D�faut:200
Contexte:configuration du serveur, serveur virtuel, r�pertoire, .htaccess
Statut:Extension
Module:mod_deflate
Compatibilit�:Disponible � partir de la version 2.4.10 du serveur HTTP Apache

La directive DeflateInflateRatioLimit permet de d�finir le ratio maximum entre la taille d'un corps de requ�te compress� et sa taille d�compress�e. Ce ratio est v�rifi� au fur et � mesure de l'arriv�e du corps de requ�te, et s'il est d�pass� plus de DeflateInflateRatioBurst fois, le traitement de la requ�te est interrompu.

top

DeflateMemLevel Directive

Description:La quantit� de m�moire utilisable par zlib pour la compression
Syntaxe:DeflateMemLevel valeur
D�faut:DeflateMemLevel 9
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_deflate

La directive DeflateMemLevel permet de sp�cifier la quantit� de m�moire utilisable par zlib pour la compression (une valeur comprise entre 1 et 9).

top

DeflateWindowSize Directive

Description:Taille de la fen�tre de compression zlib
Syntaxe:DeflateWindowSize valeur
D�faut:DeflateWindowSize 15
Contexte:configuration du serveur, serveur virtuel
Statut:Extension
Module:mod_deflate

La directive DeflateWindowSize permet de sp�cifier la fen�tre de compression zlib (une valeur comprise entre 1 et 15). En g�n�ral, plus grande sera la taille de la fen�tre, plus grand sera le taux de compression auquel on pourra s'attendre.

Langues Disponibles:  en  |  fr  |  ja  |  ko 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our mailing lists.