Nginx : Accélérez votre site Web grâce à la compression Brotli !
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.
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".
Vous souhaitez discuter Web, développement, tuning ? Rejoignez le serveur Discord Geeek.org lancé il y a quelques semaines !