Configurer NGINX pour activer la compression gzip dans Synology WebStation

Testé sur le DSM 6.2.2-24922 Update 4

Le serveur web par défaut utilisé par WebStation est nginx.

A chaque redémarrage de WebStation, les fichiers de configurations sont régénérer afin d’éviter toute erreur qui viendrait à bloquer le fonctionnement de WebStation. Les fichiers de configuration sont crées à partir de modèle mustache.

Pour rendre le site plus rapide, il est important d’activer la compression gzip, pour compresser à la volée les fichiers statiques du site

Le fichier à modifier se situe dans le dossier :

/var/packages/WebStation/target/misc/

C’est le fichier :

/var/packages/WebStation/target/misc/VirtualHost-nginx.mustache

Le code suivant doit être ajouté :

gzip on;
gzip_static on;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/x-javascript text/javascript;

Cela donne comme extrait du fichier VirtualHost-nginx.mustache modifié :

{{#fqdn}}
server_name {{fqdn}};
{{/fqdn}}
{{^fqdn}}
server_name _;
{{/fqdn}}
gzip on;
gzip_static on;
gzip_comp_level 6;
gzip_types text/plain text/css application/json application/x-javascript text/javascript;
{{> /var/packages/WebStation/target/misc/SSLProfile.mustache }}

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 quise trouvent dans le fichier /etc/nginx/mime.types, et gzip_types correspond aux types MIME auquels doivent être appliqués la compression gzip.

Si vous analysez les diffèrents codes des fichiers, vous remarquerez qu’il n’y a pas de compression pour les images JPG, PNG ou encore GIF. Ce n’est pas conseillé d’activer la compression GZIP pour ce type de fichier, le PNG est déja un format d’image compressé, activer la compression GZIP pour ce type de fichier ne changera rien, et peut même empirer la chose en augmentant la taille du fichier ou le traitement du CPU côté serveur … Pour ce qui est des autres formats non compressés, cela surchargera aussi votre serveur pour un gain très faible.

Quant à l’option gzip_static on;, cette option permet d’envoyer des fichiers précompressés avec l’extension de nom de fichier «.gz» au lieu de fichiers normaux (ngx_http_gzip_static_module). Cela permet d’éviter de surcharger le processeur du NAS si les fichiers compressés .gz sont crées lorsque le site est généré. Cela est permis par le plugin jekyll-zopfli.

D’autres informations sur NGINX, et le plugin jekyll-zopfli sont disponibles dans l’article suivant NGINX, jekyll, gzip et Synology WebStation

Pour vérifier si la compression est bien utilisant les outils de developpement de Google Chrome, sur l’onglet “Network” :

En cliquant sur un fichier .html , la ligne Content encoding : gzip apparaît. Cela veut dire que votre fichier est bien compressé.

Si vous utilisez des polices de caractères web, il faudra les ajouter dans les types MIME de gzip_types :

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

Le site gtmetrix.com qui permet de mesurer la performance d’un site vous donnera aussi l’information.

· NGINX, WebStation, gzip