Nginx

Comment activer la compression Brotli dans Nginx

Comment activer la compression Brotli dans Nginx

La compression Brotli est une technique de compression générique largement prise en charge par les navigateurs. Il est comparable aux méthodes de compression actuellement disponibles car il offre des taux de compression 20-26% meilleurs. Néanmoins, ce n'est pas bon à moins que le serveur Web n'envoie des ressources textuelles compressées avec l'algorithme Brotli.

Dans cet article, nous allons apprendre comment fonctionne la compression dans le serveur et pourquoi est-elle utile? Nous apprendrons également à installer le serveur Nginx et à faire en sorte que notre serveur fournisse des fichiers compressés Brotli.

Arrière-plan

Les techniques/algorithmes de compression améliorent les performances du site Web en réduisant la taille du contenu. Par conséquent, les données compressées nécessitent une charge et un temps de transfert faibles. Cependant, il a un prix. Les serveurs utilisent beaucoup de ressources de calcul pour fournir un meilleur taux de compression. Donc, mieux c'est, c'est cher. Donc, beaucoup d'efforts sont ajoutés pour améliorer les formats de compression tout en utilisant un minimum de cycles CPU.

À ce jour, le format de compression le plus potentiel était gzippé. Récemment, gzip a été remplacé par un nouvel algorithme de compression connu sous le nom de Brotli. Il s'agit d'un algorithme de compression avancé composé du codage de Huffman, de l'algorithme L77 et de la modélisation de contexte. En revanche, Gzip est construit sur l'algorithme Deflate.

Le format de compression sans perte, conçu par Google, est étroitement lié au format de compression deflate. Les deux méthodes de compression utilisent des fenêtres coulissantes pour le référencement arrière. La taille de la fenêtre coulissante Brotli varie de 1 Ko à 16 Mo. En revanche, Gzip a une taille de fenêtre fixe de 32 Ko. Cela signifie que la fenêtre de Brotli est 512 fois plus grande que la fenêtre de dégonflage, ce qui n'est pas pertinent car les fichiers texte de plus de 32 Ko sont rarement sur les serveurs Web.

La compatibilité de la compression du serveur est importante

Chaque fois que nous téléchargeons un fichier à partir du navigateur, le navigateur demande au serveur quel type de compression il prend en charge via un en-tête. Par exemple, si le navigateur prend en charge gzip et dégonfler décompresser. Il ajoutera ces options dans son Accepter-Encodage, en-tête, je.e.,

Accept-Encoding="deflate, gzip"

Par conséquent, les navigateurs qui ne prennent pas en charge ces formats ne les incluront pas dans l'en-tête. Lorsque le serveur répond avec le contenu, il informe le navigateur du format de compression via un en-tête, Encodage de contenu. Par conséquent, s'il prend en charge gzip, l'en-tête ressemble à ceci :

Content-Encoding="gzip"

Les en-têtes des navigateurs comme Firefox qui prennent en charge la compression Brotli et le serveur Web sur lequel un module Brotli est installé ressemblent à ceux-ci :

Accept-Encoding="deflate, gzip, br"
Content-Encoding="gzip, br"

Par conséquent, si le navigateur utilise le meilleur format de compression et que le serveur Web ne l'utilise pas, ce n'est pas bon, car le serveur Web ne renverra pas les fichiers avec l'algorithme de compression préféré. C'est pourquoi il est important d'installer le module de compression pour le serveur web.

Installation du serveur

Avant d'aller de l'avant avec la configuration Brotli, nous allons configurer notre serveur Nginx. Avant ça sudo apt-get mise à jour votre distribution Ubuntu et tapez les commandes suivantes dans votre terminal bash.

[email protected] :~$ sudo apt-get update
[email protégé] :~$ sudo apt-get install nginx -y
[email protected]:~$ sudo service nginx start

Pour activer la compression Brotli dans le Nginx, nous allons compiler notre .donc modules selon nos détails de version Nginx. Comme indiqué, la saisie de la commande suivante affichera la version Nginx :

[email protégé] :~$ nginx -v
version nginx : nginx/1.18.0 (Ubuntu)

Utilisez le wget commande avec les détails de votre version nginx pour télécharger le code source à partir du site Web de Nginx.

[email protégé] : ~$ wget https://nginx.org/télécharger/nginx-1.18.0.le goudron.gz
--2021-02-07 02:57:33-- https://nginx.org/télécharger/nginx-1.18.0.le goudron.gz
Résoudre nginx.org (nginx.org)… 3.125.197.172, 52.58.199.22, 2a05:d014:edb:5702::6,…
Connexion à nginx.org (nginx.org)|3.125.197.172|:443… connecté.
Requête HTTP envoyée, en attente de réponse… 200 OK
Longueur : 1039530 (1015K) [application/octet-stream]
Enregistrement dans : 'nginx-1.18.0.le goudron.gz'
nginx-1.18.0.le goudron.gz             100%[============================================== ====================>]   1015K   220KB/s en 4.8s
2021-02-07 02:57:38 (212 Ko/s) - 'nginx-1.18.0.le goudron.gz' enregistré [1039530/1039530]

Nous utiliserons ce code source pour compiler *.donc binaires pour la compression Brotli. Extrayez maintenant le fichier à l'aide de la commande suivante.

[email protégé] :~$ tar xzf nginx-1.18.0.le goudron.gz

Configuration du module Brotli

Maintenant, Google a publié le module Brotli pour Nginx. Nous allons git-cloner le module à partir du référentiel Google.

[email protégé] :~$ git clone https://github.com/google/ngx_brotli --recursive.

On le fera CD dans le nginx-1.18.0 dossier pour configurer le module dynamique Brotli.

[email protégé] : ~$ cd nginx-1.18.0/
[email protégé] :~$ sudo ./configure --with-compat --add-dynamic-module=… /ngx_brotli

Remarque : vous pouvez recevoir l'erreur suivante lors de la configuration

./configure : erreur : le module de réécriture HTTP nécessite la bibliothèque PCRE.
Vous pouvez soit désactiver le module en utilisant --without-http_rewrite_module
option, ou installer la bibliothèque PCRE dans le système, ou construire la bibliothèque PCRE
statiquement à partir de la source avec nginx en utilisant --with-pcre= option.

Dans ce cas, exécutez la commande suivante pour installer la bibliothèque pcre

[email protected]:~$ sudo apt-get install libpcre3-dev -y

Compilation de modules

Nous utiliserons le Fabriquer commande pour créer un modules dossier à l'intérieur du nginx-1.18.0 répertoire.

[email protected] :~$ sudo make modules

Nous utilisons le cp commande à copier ngx_http_brotli*.donc fichiers de la nginx-1.18.0/objets dossier dans le dossier modules.

[email protégé] : ~$ cd /nginx-1.18.0/objets/
[email protégé] :~$ sudo cp  ngx_http_brotli*.donc /usr/share/nginx/modules

Maintenant, listez le contenu des fichiers en utilisant le ls commander. Vous remarquerez qu'il se compose de deux fichiers de module différents, i.e.:

[email protégé] :~$ ls ngx_http_brotli*.donc
ngx_http_brotli_filter_module.donc
ngx_http_brotli_static_module.donc
  • Module Brotli régulier : Le module ngx_http_brotli_filter_module.donc le module compresse tous les fichiers à la volée, et donc il nécessite plus de ressources de calcul
  • Module Brotli statique : Le ngx_http_brotli_static_module.donc le module lui permet de servir des fichiers statiques pré-compressés, donc moins gourmands en ressources.

Utilisez maintenant votre éditeur préféré pour ouvrir le fichier /etc/nginx/nginx.conf pour ajouter des modules de chargement Brotli pour commencer la configuration de Brotli en incluant les lignes suivantes :

[email protégé] :~$ sudo vim /etc/nginx/nginx.conf
# Charger la section du module
load_module "modules/ngx_http_brotli_filter_module.donc";
load_module " modules/ngx_http_brotli_static_module.donc";

Nous inclurons également les chemins des dossiers de configuration /etc/nginx/conf.ré/*.conf

et /usr/share/nginx/modules/*.conf dans le fichier ci-dessus tels que :

http
# Inclure les dossiers de configuration
inclure /etc/nginx/conf.ré/*.conf ;
inclure /usr/share/nginx/modules/*.conf ;

Pour ajouter la configuration Brotli, ouvrez le fichier /etc/nginx/conf.d/brotli.conf

fichier dans le vigueur éditeur et activez Brotli en définissant les directives de configuration suivantes :

brotli     sur ;
brotli_static        activé ;
brotli_comp_level          6 ;
brotli_types         application/rss+xml application/xhtml+xml
texte/css texte/plain ;

Le "brotli off|on” valeur active ou désactive la compression dynamique ou à la volée du contenu.

Le 'brotli_ statique sur' permet au serveur Nginx de vérifier si les fichiers pré-compressés avec le .br les extensions existent ou pas. Nous pouvons également transformer ce paramètre en option désactivé ou alors toujours. le toujours valeur permet au serveur d'envoyer du contenu pré-compressé sans confirmer si le navigateur le prend en charge ou non. Étant donné que Brotli est gourmand en ressources, ce module est le mieux adapté pour réduire les situations de goulot d'étranglement.

Le "brotli_comp_level 6La directive " définit le niveau de qualité de compression dynamique à 6. Il peut aller de 0 à 11.

Enfin, activez la compression dynamique pour des types MIME spécifiques, alors que les réponses text/html sont toujours compressées. La syntaxe par défaut de cette directive est brotli_types [type mime]. Vous pouvez en savoir plus sur la directive de configuration sur Github.

Enregistrez les modifications, redémarrez le service Nginx en tapant « redémarrer le service sudo nginx » et tout est fait.

Conclusion

Après les changements, vous remarquerez des améliorations évidentes dans les mesures de performance. Cependant, il présente un léger inconvénient d'augmentation de la charge du processeur aux heures de pointe. Pour éviter de telles situations, gardez un œil sur l'utilisation du processeur ; s'il atteint régulièrement 100 %, nous pouvons utiliser de nombreuses options selon nos préférences, telles que la présentation de contenu pré-compressé ou statique, l'abaissement du niveau de compression et la désactivation de la compression à la volée, entre autres.

Le bouton de clic gauche de la souris ne fonctionne pas sous Windows 10
Si vous utilisez une souris dédiée avec votre ordinateur portable ou de bureau mais que le le clic gauche de la souris ne fonctionne pas sur Windows 1...
Le curseur saute ou se déplace de manière aléatoire lors de la saisie dans Windows 10
Si vous constatez que le curseur de votre souris saute ou se déplace tout seul, automatiquement, au hasard lors de la saisie sur un ordinateur portabl...
Comment inverser le sens de défilement de la souris et des pavés tactiles dans Windows 10
Souris et Pavé tactiles rendent non seulement l'informatique facile, mais plus efficace et moins chronophage. Nous ne pouvons pas imaginer une vie san...