Comment configurer Nginx pour activer la compression Gzip ?

publié le 04/10/2017

nginx gzip

La compression Gzip est activée par défaut sur Nginx mais elle ne s'applique que sur les fichiers HTML. Mieux configurer cette fonctionnalité peut considérablement accélérer l'affichage de vos pages web et économiser de la bande passante pour vos usagers. C'est en outre une fonctionnalité très facile à configurer. Alors pourquoi s'en priver ?!


1ère étape: editer le fichier /etc/nginx/mime.types

Nginx utilise le fichier mime.types pour décider s'il doit activer la compression au fichier qu'il s'apprête à servir. Ce fichier doit lister de manière exhaustive les MIME types. Les polices sont parfois absentes. Assurez vous donc que ces lignes soient bien présentes dans le fichier mime.types:

application/vnd.ms-fontobject    eot;
application/x-font-ttf    ttf;
font/opentype    ott;
font/x-woff    woff;

2nde étape: éditer le fichier /etc/nginx/nginx.conf

gzip on; # active la compression Gzip
gzip_disable "msie6"; 
 
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6; # 1 par défaut (le plus bas), 9 étant le plus élevé
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256; # taille minimale du fichier à compresser
gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/rss+xml text/javascript application/vnd.ms-fontobject application/x-font-ttf font/opentype image/jpeg image/png image/svg+xml image/x-icon; 
# la directive ci-dessus permet de lister les types de fichier à compresser

3ème étape: redémarrer le serveur et vérifier que tout fonctionne

En ligne de commande:

sudo nginx -t

Cette commande permet de vérifier la configuration de Nginx avant de le redémarrer. Si la console ne renvoit pas de message d'erreur passer à la commande suivante pour redémarrer le serveur.

sudo nginx -s reload

A ce stade cela devrait fonctionner. Mais un test s'impose tout de même pour vérifier que la compression soit bien activée. Vous pouvez lancer un test sur le site webpagetest.org. Il prend en compte de nombreux critères. Celui qui nous intéresse en l'occurence est "compress transfer". Si vous n'obtenez pas un "A", consultez le détail des requêtes sur ce site.

Pour ma part, la 1ère fois que j'ai tenté de configurer la compression Gzip, j'ai obtenu 1 "D" qui était dû au fait que les fichiers ayant une extension "ttf" n'était pas pris en compte. Il m'a suffi d'ajouter une déclaration au fichier mime.types pour corriger le problème. C'est d'ailleurs ce que nous avons fait lors de la 1ère étape.