Le reste des directives de la section http du fichier nginx.conf (include et gzip)

Nous avons vu dans la leçon concernant les directives de la section http beaucoup de directives. Mais nous n’avons pas eu assez d’espace 😆 pour continuer.

Afin de rendre la connaissance digeste, il est avantageux de séparer en plusieurs leçons.

Dans celle-ci, nous allons utiliser la directive « gzip » et réutiliser la directive « include ».

Nous avons déjà expliqué la fonction de la directive « include ».

Directive : gzip (http)

La directive « gzip » active le compression en utilisant l’algorithme de compression gzip.

Grâce à cette directive, la taille de la réponse envoyée par le protocole HTTP est moins élevée et les performances sont généralement améliorées.

Serveur, GZIP et client

Par contre, la compression entraîne une charge supplémentaire pour le processeur du serveur. Avant de l’activité, il faut s’assurer que le processeur du serveur soit assez puissant.

En règle générale, les serveurs modernes sont suffisamment puissants. Nous allons donc l’activer.

user www.data;
worker_processes auto;
pid /run/nginx.pid;

events {

 worker_connections 1024;

}

http {

 sendfile on;
 tcp_nopush on;
 types_hash_max_size 2048;
 include /etc/nginx/mime.types;
 default_type text/html;

 ssl_protocols TLSv1.2 TLSv1.3;
 ssl_prefer_server_ciphers on;
 ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256;

 access_log /var/log/nginx/access.log;

 error_log /var/log/nginx/notice.log notice;
 error_log /var/log/nginx/warn.log warn;
 error_log /var/log/nginx/error.log error;
 error_log /var/log/nginx/crit.log crit;

 gzip on;

}

Il existe d’autres directives qui permettent d’affiner la configuration de la compression des fichiers envoyés par Nginx. Nous en examiner quelques-unes dans la suite de la leçon.

Directive : gzip_types (http)

L’instruction « gzip_types » précise la liste des types de fichiers qui doivent être compressés. Si cette directive n’est pas spécifiée, tous les types de fichiers seront compressés.

Nous n’allons pas l’utiliser, mais je vous montre un exemple au cas où vous souhaiteriez vous en servir : gzip_types text/html text/css application/javascript application/json;. La directive ordonne de compresser les fichiers de types « html », « css » et « javascript ».

Directive : gzip_min_length (http)

Cette directive spécifie la taille minimale pour exécuter une compression avant d’envoyer la réponse. Si la réponse est inférieure à la valeur indiquée, Nginx va envoyer les données sans les compresser.

Nous allons utiliser le réglage « gzip_min_length » et insérer la valeur de 3000 octets.

user www.data;
worker_processes auto;
pid /run/nginx.pid;

events {

 worker_connections 1024;

}

http {

 sendfile on;
 tcp_nopush on;
 types_hash_max_size 2048;
 include /etc/nginx/mime.types;
 default_type text/html;

 ssl_protocols TLSv1.2 TLSv1.3;
 ssl_prefer_server_ciphers on;
 ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256;

 access_log /var/log/nginx/access.log;

 error_log /var/log/nginx/notice.log notice;
 error_log /var/log/nginx/warn.log warn;
 error_log /var/log/nginx/error.log error;
 error_log /var/log/nginx/crit.log crit;

 gzip on;
 gzip 3000;

}

Nous avons terminé avec les directives spécifiques à la compression. Il en existe d’autres, mais à mon sens les plus importantes sont celles que je vous ai montrées.

include /etc/nginx/conf.d/*.conf;

Nous utilisons de nouveau la directive « include » pour inclure plusieurs fichiers grâce à la valeur « /etc/nginx/conf.d/*.conf ».

Ici nous ajoutons d’autres fichiers de configuration. Nous allons l’inclure dans notre fichier « nginx.conf » même si finalement nous n’utiliserons pas cette façon de faire. En effet, c’est utile lorsque l’on veut séparer les directives de « nginx.conf » en plusieurs fichiers.

Vous l’avez peut-être remarqué, on ne spécifie pas de nom de fichier, mais on ajoute une étoile (*). Cela signifie que tous les fichiers du dossier « conf.d » et avec une extension « .conf » seront inclus à notre fichier « nginx.conf ».

Juste par curiosité, nous allons vérifier ce qu’il y a dans le dossier conf.d.

cd /etc/nginx/conf.d/
ls

Comme vous pouvez le constater, le dossier est vide. Mais nous allons quand même ajouter la directive « include » avec la valeur correspondante, car avec le temps et lorsque vous maîtriserez Nginx, vous aurez peut-être envie de séparer en plusieurs fichiers.

user www.data;
worker_processes auto;
pid /run/nginx.pid;

events {

 worker_connections 1024;

}

http {

 sendfile on;
 tcp_nopush on;
 types_hash_max_size 2048;
 include /etc/nginx/mime.types;
 default_type text/html;

 ssl_protocols TLSv1.2 TLSv1.3;
 ssl_prefer_server_ciphers on;
 ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256;

 access_log /var/log/nginx/access.log;

 error_log /var/log/nginx/notice.log notice;
 error_log /var/log/nginx/warn.log warn;
 error_log /var/log/nginx/error.log error;
 error_log /var/log/nginx/crit.log crit;

 gzip on;
 gzip 3000;

 include /etc/nginx/conf.d/*.conf; 

}

include /etc/nginx/sites-enabled/*;

Attaquons maintenant une partie très importante qu’il faut comprendre !

C’est la valeur /etc/nginx/sites-enabled/*; de la directive include

Encore une fois, nous n’indiquons pas de fichiers, mais juste une étoile (*) et cette fois-ci sans extensions. Cela signifie que nous voulons inclure n’importe quel fichier du dossier sites-enabled.

L’objectif est donc d’inclure tous les fichiers du dossier sites-enabled.

user www.data;
worker_processes auto;
pid /run/nginx.pid;

events {

 worker_connections 1024;

}

http {

 sendfile on;
 tcp_nopush on;
 types_hash_max_size 2048;
 include /etc/nginx/mime.types;
 default_type text/html;

 ssl_protocols TLSv1.2 TLSv1.3;
 ssl_prefer_server_ciphers on;
 ssl_ciphers ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256;

 access_log /var/log/nginx/access.log;

 error_log /var/log/nginx/notice.log notice;
 error_log /var/log/nginx/warn.log warn;
 error_log /var/log/nginx/error.log error;
 error_log /var/log/nginx/crit.log crit;

 gzip on;
 gzip 3000;

 include /etc/nginx/conf.d/*.conf;
 include /etc/nginx/sites-enabled/*; 

}

Que sont ces fichiers ?

Vous vous demandez pourquoi inclure les fichiers du dossier sites-enabled. Nous allons aborder cela dans une autre section du cours qui comportera plusieurs leçons toujours en rapport avec la configuration de Nginx.

La suite…

Je vous invite à poursuivre votre apprentissage et nous verrons ensemble comme utiliser les fichiers de configuration dans le dossier sites-enabled.