Comprendre les directives du fichier nginx.conf

Nous allons maintenant bien comprendre le fichier nginx.conf. Si vous ne vous rappelez pas où se trouve ce fichier, reportez-vous à la leçon correspondante.

Ouvrir nginx.cong

Je vous invite à vous connecter à votre serveur et à ouvrir nginx.conf.

nano nginx.conf

De nombreuses choses sont affichées.

user www-data;
worker_processes auto;
pid /run/nginx.pid;
include /etc/nginx/modules-enabled/*.conf;

events {
        worker_connections 768;
        # multi_accept on;
}

http {

        ##
        # Basic Settings
        ##

        sendfile on;
        tcp_nopush on;
        types_hash_max_size 2048;
        # server_tokens off;

        # server_names_hash_bucket_size 64;
        # server_name_in_redirect off;

        include /etc/nginx/mime.types;
        default_type application/octet-stream;

        ##
        # SSL Settings
        ##

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
        ssl_prefer_server_ciphers on;

        ##
        # Logging Settings
        ##

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

        ##
        # Gzip Settings
        ##

        gzip on;

        # gzip_vary on;
        # gzip_proxied any;
        # gzip_comp_level 6;
        # gzip_buffers 16 8k;
        # gzip_http_version 1.1;
        # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

        ##
        # Virtual Host Configs
        ##

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


#mail {
#       # See sample authentication script at:
#       # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#       # auth_http localhost/auth.php;
#       # pop3_capabilities "TOP" "USER";
#       # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#       server {
#               listen     localhost:110;
#               protocol   pop3;
#               proxy      on;
#       }
#
#       server {
#               listen     localhost:143;
#               protocol   imap;
#               proxy      on;
#       }
#}

Cela fait beaucoup de choses à assimiler 😳.

Pour bien bien comprendre les directives, je vous propose de tout supprimer et de les réécrire petit à petit tout en expliquant leurs fonctions.

À ce stade, vous avez supprimé le contenu de nginx.conf. N’ayez pas peur, nous allons réussir à le remplir de nouveau ensemble. Au pire si cela vous inquiète, vous pouvez copier-coller le contenu dans un fichier que vous garderez quelque part dans votre ordinateur.

Directive : user

Nous allons commencer par la directive « user » de notre fichier de configuration nginx.conf.

Elle spécifie le nom de l’utilisateur système sous lequel est exécuté le processus nginx.

Par défaut, c’est « www.data ». On peut laisser l’« user » par défaut.

user www.data;

😮 Ne pas oublier le « ; » à la fin de chaque directive.

Directive : worker_processes

La directive « worker_processes » permet d’indiquer à Nginx le nombre de processus que le serveur doit créer pour traiter les requête client.

Le mieux est d’écrire la valeur « auto ». Ainsi, Nginx déterminera de lui-même le nombre optimal en fonction du nombre de cœurs de CPU de votre serveur.

user www.data;
worker_processes auto;

Directive : pid

La directive « pid » contient le chemin qui pointe vers un fichier (.pid) qui contient le PID ou l’ID de processus de Nginx.

Par défaut, Nginx l’enregistre dans /run/nginx.pid.

Nous pouvons garder cette valeur également dans notre fichier nginx.conf.

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

Vérifier nginx.pid

Est-ce que vous voulez vérifier que ce fichier existe bien ?

Ouvrez un autre onglet du terminal de votre serveur et tapez les commandes suivantes.

cd /run
ls
agetty.reload  dbus     motd.dynamic  rpcbind          sshd.pid  utmp
console-setup  exim4    mount         screen           sudo      xinetd.pid
credentials    initctl  named         sendsigs.omit.d  systemd
crond.pid      lock     network       shm              udev
crond.reboot   log      nginx.pid     sshd             user

Nous voyons bien notre fichier nginx.pid 😄.

Section : events

La section event est utilisée pour définir les paramètres qui ont un rapport avec les connexions et les évènements réseau gérés par Nginx.

Nous allons analyser deux directives de cette section.

Connexions

Les connexions de réseau sont des liens établis entre deux ordinateurs pour qu’ils puissent communiquer ensemble. Dans le cas de Nginx, il gèrera la communication entre le serveur et l’ordinateur de l’utilisateur.

Évènements

Les évènements de réseau sont des évènements sur les connexions.

Par exemple :

  • Requête HTTP reçue
  • Requête HTTP envoyée
  • Client qui établit une connexion
  • etc...

Créer une section

Pour créer une section, il faut utiliser un bloc d’accolades.

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

events {



}

Directive : worker_connections (events)

L’information émanant de « worker_connections » indique le nombre de connexions que le serveur peut traiter en même temps.

Quelle indiquée ?

Tel est la question. Cela dépend de la quantité de ressources de votre serveur.

Une valeur trop haute risque de surcharger votre serveur et ainsi dégrader les performances. Si la valeur est trop basse, certaines connexions pourront être perdues.

En général, 1024 est un bon compromis et c’est ce que nous allons indiquer comme valeur.

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

events {

 worker_connections 1024;

}

Ce qu’il est également possible de faire est de changer la valeur et faire des tests en vérifiant comment réagit votre serveur.

Directive : multi_accept (events)

Lorsque la directive « multi_accept » est activée, le serveur accepte plusieurs connexions en même temps. Lorsqu’elle est désactivée, le serveur n’accepte qu’une connexion à la fois.

Par défaut, Nginx désactive cette directive et nous allons suivre cet exemple. Pour cela, nous n’allons pas l’insérer dans notre fichier de configuration.

Différences entre worker_connections et multi_accept

La directive « worker_connections » est comme un nombre maximum de passagers qu’une voiture peut transporter en même temps. La directive « multi_accept » est comme la façon dont les passagers montent dans la voiture : tous en même temps ou un par un.

La suite de la configuration dans la prochaine leçon

Nous avons déjà abordé beaucoup de points. La suite de la configuration dans la prochaine leçon.