Featured image of post Nginx : Activer la compression GZIP

Nginx : Activer la compression GZIP

C’est toujours dans une approche d’optimization de notre serveur ainsi que de l’expérience utilisateur que nous allons aborder la mise en place de la compression Gzip des requêtes http sur Nginx. Nous avons déjà vu comment mettre en cache nos fichiers statiques pour rendre notre site plus rapide.  Ici nous allons voir comment compresser nos requêtes.

Vous devez avoir le module ngx_http_gzip_module de compiler sur votre nginx. C’est généralement le cas par défaut.

Les paramètres gzip sont à mettre dans le bloc « http » généralement ce bloc se trouve dans le fichier nginx.conf.

On y ajoute les paramètres suivants :

gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 4 32k;
gzip_http_version 1.1;
gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/x-font-ttf application/javascript font/eot font/opentype image/svg+xml image/x-icon text/plain;

Et l’on redémarre nginx.

Les lignes les plus importantes sont gzip on; et gzip_types.

Quelques explications :

  • gzip on: active la compression
  • gzip_types: permet de spécifier quel type de fichiers doit être compressé.
  • gzip_vary: permet d’ajouter dans le header Vary: Accept-Encoding ce qui permet au proxy de stocker une version compressée et non compressée du fichier.
  • gzip_proxied: permet de compresser les requêtes venant de proxies.
  • gzip_comp_level: determine le niveau de compression.
    Plus la compression sera élevée plus la requête sera petite mais le client perdra un peu plus de temps à la décompresser.
  • gzip_buffers 4 32k: le premier chiffre (4) correspond au nombre et le deuxième à la taille du buffer utilisés pour compresser la requête.
  • gzip_http_version: permet de spécifier la version http qui doit être compressée.

On peut surcharger nos paramètres en le mettant dans le bloc « server ».

Par exemple si l’on met gzip off dans un bloc « server » cela désactivera la compression gzip sur notre domaine.

Test

Nous allons tester à l’aide de curl si nos paramètres sont bien pris en compte.

$ curl -I --header "Accept-Encoding: gzip" https://www.cloud-devops.fr/
HTTP/1.1 200 OK
Server: nginx
Date: Fri, 05 Feb 2016 14:32:20 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
Content-Encoding: gzip

Si vous voyez « Vary: Accept-Encoding » et « Content-Encoding: gzip » c’est que votre serveur est bien paramétré.

Pour plus d’infos sur le module gzip voici le documentation nginx officiel gzip

Built with Hugo
Theme Stack designed by Jimmy