Geeek - Le blog Geek & High-tech

Vous le savez peut-être déjà, Brotli est un algorithme de compression développé par Google qui permet d'optimiser la taille des ressources sur le Web avec de meilleurs résultats que Gzip.

Les chiffres de comparaison entre Brotli et Gzip que l'on trouve souvent sur Internet oscillent entre 15 et 20% de gain de compression sur des ressources de type CSS, JS et HTML. Ce gain de compression permet d'accélerer le téléchargement des ressources des sites Web.

La bonne nouvelle est que Brotli est aujourd'hui supporté par la majorité des navigateurs sur Internet, son installation peut être cependant parfois compliquée sur un serveur Web ...

Vous trouverez ci-dessous la couverture du support de la compression Brotli par les navigateurs du marché, ce tableau est issu du site Caniuse.com.

caniuse-brotli

Voici une astuce que j'ai trouvée pour installer facilement le module Brotli sur un serveur Nginx sous une distribution Ubuntu 18.04 ou 20.04, sans pour autant devoir recompiler le code source de Nginx ...

Installez une version récente de Nginx sur Ubuntu

La première étape de l'astuce est d'ajouter le repository Nginx aux repository de votre distribution Ubuntu pour bénéficier d'un package Nginx récent.

$ sudo nano /etc/apt/sources.list.d/nginx.list

Ajoutez les deux lignes suivantes si vous utilisez une distribution Ubuntu 18.04.
Si vous utilisez une distirbution Ubunut 20.04, remplacez "bionic" par "focal".

deb [arch=amd64] https://nginx.org/packages/mainline/ubuntu/ bionic nginx
deb-src https://nginx.org/packages/mainline/ubuntu/ bionic nginx

Installez la clef de signature des paquets de ce repository Nginx.

$ wget https://nginx.org/keys/nginx_signing.key
$ sudo apt-key add nginx_signing.key

Mettez à jour la liste des repository de votre environnement.

$ sudo apt update

Supprimez l'ancienne distribution Nginx de votre système Linux.

$ sudo apt remove nginx nginx-common nginx-full nginx-core

Faites un backup si besoin de votre ancien fichier de configuration pour éviter toute erreur d'écrasement lors de l'installation du nouveau package.

$ sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.bak

Installez la dernière version stable de Nginx.

$ sudo apt install nginx

Installez le module Brotli pour Nginx

La seconde étape consiste à télécharger les modules associés à la version de Nginx que vous venez d'installer.

Vous trouverez sur cet espace GitHub les modules Brotli compilés pour Ubuntu 18.04 et 20.04 :

https://github.com/mint-hosting/nginx-module-brotli/releases

Attention, ne vous trompez pas de release, le cas échéant Nginx ne pourra pas démarrer correctement.

Pour vérifier la version Nginx installée sur votre serveur afin d'éviter toute erreur dans les modules téléchargés.

$ nginx -v
nginx version: nginx/1.19.6

Une fois le Zip téléchargé, vous pouvez déposer les 2 librairies récupérées (.so) dans le répertoire dédié aux modules Nginx :

$ mv *.so /usr/lib/nginx/modules/

Ensuite, modifiez le fichier /etc/nginx/nginx.conf afin que Nginx puisse charger les deux modules précédement installés.

load_module /usr/lib/nginx/modules/ngx_http_brotli_filter_module.so;
load_module /usr/lib/nginx/modules/ngx_http_brotli_static_module.so;

Activez l'extension Brotli tout en gardant la compression Gzip active pour permettre aux clients Web ne supportant par Brotli d'utiliser Gzip.

brotli on;
brotli_comp_level 6;
brotli_types text/xml image/svg+xml application/x-font-ttf image/vnd.microsoft.icon application/x-font-opentype application/json font/eot application/vnd.ms-fontobject application/javascript font/otf application/xml application/xhtml+xml text/javascript  application/x-javascript text/plain application/x-font-truetype application/xml+rss image/x-icon font/opentype text/css image/x-win-bitmap;

Testez la configuration mise en oeuvre

Testez la configuration et la compatibilité des modules avec votre installation nginx :

$ sudo nginx -t 
$ sudo /etc/init.d/nginx restart

Si tout est bon, testez la compression avec votre navigateur préféré. Vous devriez voir "br" dans l'entête HTTP "content-encoding".

brotli-chrome

Vous souhaitez discuter Web, développement, tuning ? Rejoignez le serveur Discord Geeek.org lancé il y a quelques semaines !


Vous êtes correctement abonné à Geeek
Bienvenue ! Vous êtes correctement connecté.
Parfait ! Vous êtes correctement inscrit.
Votre lien a expiré
Vérifiez vos emails et utiliser le lien magique pour vous connecter à ce site