Serveur Apache HTTP Version 2.4
Description: | Comprime le contenu avant de le servir au client |
---|---|
Statut: | Extension |
Identificateur�de�Module: | deflate_module |
Fichier�Source: | mod_deflate.c |
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.
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.
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript
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".
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>
DEFLATE
est toujours ins�r� apr�s les
filtres RESOURCE comme PHP ou SSI. Il n'affecte jamais les
sous-requ�tes internes.
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.
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.
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.
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�.
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.
Header set Vary *
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.
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).
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.
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
Output
Ratio
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 :
DeflateFilterNote Input instream DeflateFilterNote Output outstream DeflateFilterNote Ratio ratio LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate CustomLog logs/deflate_log deflate
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�.
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.
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.
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).
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.