Le module BROTLI_COMPRESS
qui permet de compresser un contenu avant sa
livraison au client en utilisant la bibliothèque brotli. Ce filtre est
implémenté en utilisant la bibliothèque Brotli que l'on peut trouver à https://github.com/google/brotli.
Certaines applications web sont vulnérables à une attaque de type vol d'informations lorsqu'une connexion TLS transmet des données compressées. Pour plus d'informations, étudiez en détail la famille d'attaques "BREACH".
Voici une configuration simple qui compresse des types de contenus courants au format texte :
Certaines applications web sont vulnérables à une attaque de type vol d'informations lorsqu'une connexion TLS transmet des données compressées. Pour plus d'informations, étudiez en détail la famille d'attaques "BREACH".
La compression est implémentée par le filtre BROTLI_COMPRESS
. La
directive suivante active la compression pour les documents correspondant
au conteneur dans lequel elle est placée :
Si vous voulez restreindre la compression à certains types MIME
particuliers, vous pouvez utiliser la directive
BROTLI_COMPRESS
est toujours inséré après les
filtres RESOURCE comme PHP ou SSI. Il n'affecte jamais les sous-requêtes
internes.
no-brotli
permet de désactiver la
compression brotli pour une requête particulière, et ceci même si elle
est supportée par le client.
Le module Vary:Accept-Encoding
pour indiquer aux mandataires qu'une
réponse mise en cache ne doit être envoyée qu'aux clients qui envoient
l'en-tête de requête Accept-Encoding
approprié. Ceci permet
d'éviter d'envoyer du contenu compressé à un client qui ne sera pas en
mesure de le décompresser.
Si vous utilisez des exclusions spéciales dépendant, par exemple, de
l'en-tête User-Agent
, vous devez faire un ajout manuel à
l'en-tête Vary
afin d'informer les mandataires des restrictions
supplémentaires. Par exemple, dans une configuration typique où l'addition
du filtre BROTLI_COMPRESS
dépend de l'en-tête User-Agent
,
vous devez ajouter :
Si votre décision d'utiliser la compression ou non dépend d'autres
informations que le contenu d'en-têtes de requêtes (par exemple la version
HTTP), vous devez affecter la valeur *
à l'en-tête
Vary
. Ceci permet d'éviter que des mandataires qui le
supportent n'effectuent une mise en cache intégrale.
comme
La directive
Si vous souhaitez que l'information enregistrée dans vos journaux soit plus pertinente, vous pouvez renseigner l'argument optionnel type afin de spécifier le type de données à enregistrer dans la note à journaliser. L'argument type accepte les valeurs suivantes :
Input
Output
Ratio
output/input *
100
). Il s'agit de l'option par défaut si l'argument
type est omis.Vous pouvez alors configurer vos journaux de la manière suivante :
La directive
La directive
La directive
La directive
Ajoute la méthode de compression à la fin de l'en-tête ETag, ce qui implique que les représentations compressées et non compressées possèderont des en-têtes ETag uniques. C'est le comportement par défaut depuis la version 2.4.0 avec un autre module de compression dynamique, mod-deflate. Ce paramètre permet d'éviter l'envoi de messages "HTTP Not Modified" (304) en réponse aux requêtes conditionnelles pour des contenus compressés.
Ne modifie pas l'en-tête ETag d'une réponse compressée. C'était le comportement par défaut avant la version 2.4.0 avec un autre module de compression dynamique, mod-deflate. Ce paramètre ne respecte pas la propriété HTTP/1.1 selon laquelle toutes les représentations d'une même ressource ont des en-têtes ETag uniques.
Supprime l'en-tête ETag des réponses compressées, ce qui rend impossibles certaines requêtes conditionnelles, mais évite les inconvénients des options précédentes.