Mise en place serveur NGINX

Mise en place serveur NGINX

Dans cet article, nous montrerons comment installer NGINX, un serveur web open-source dont les principales fonctionnalités sont de fonctionner comme un reverse-proxy et un répartiteur de charge.

NGINX peut être installé sur plusieurs distributions Linux (Ubuntu, Debian etc). La documentation complète est disponible sur le site officiel de NGINX.

Installation

Ici, l'installation se fera sur Debian.

  1. Mettre à jour les paquets

     sudo apt update
     sudo apt upgrade
    
  2. Installez les prérequis et la clé de signature officielle NGINX:

     sudo apt install curl gnupg2 ca-certificates lsb-release debian-archive-keyring
     curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
         | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
    
  3. Configurer le dépôt apt pour les paquets nginx stables

     echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \
     http://nginx.org/packages/debian `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
    
  4. Installer NGINX

     sudo apt update
     sudo apt install nginx
    
  5. Démarrer NGINX

     sudo systemctl start nginx
     sudo systemctl enable nginx
    

    Vous devez donc pouvoir accéder à la page d'accueil de NGINX avec l'url http://192.168.2.94 avec l'IP de votre machine.

Par défaut, il exécute le fichier index.html situé dans le répertoire /usr/share/nginx/html/index.html

Configuration de Nginx

Il faut maintenant configurer le fichier de configuration principal de NGINX, nginx.conf ,situé dans le répertoire /etc/nginx/. Ce fichier définit la manière dont Nginx se comporte pour gérer les requêtes, les log etc, ainsi que les paramètres par défaut. Plus, d'informations sur les commandes sont disponibles sur le site officiel de Nginx ici.

Voici par défaut , le fichier nginx.conf après une première installation.

  • user: définit l'utilisateur sous lequel NGINX s'exécute.

  • worker_processes: configure le nombre de processus de travail en fonction du nombre de cœurs CPU disponibles. La valeur auto permet de déterminer automatiquement le nombre de processus en fonction du nombre de core CPU disponible.

  • error_log: spécifie le fichier où les erreurs sont consignées.

  • pid: définit le fichier PID dans le lequel le processus principal est enrégistré.

  • Le bloc events: gère les paramètres de connexions

    • worker_connections : détermine le nombre maximum de connexions simultanées qu'un processus de travail peut gérer.
  • le bloc http: gère les paramètres pour le serveur HTTP

    • access_log: spécifie le fichier où les journaux d'accès sont consignés.

    • sendfile: active l'envoi de fichiers pour une meilleur performance

    • keepalive_timeout: définit le délai d'attente pour les connexions persistantes

Configuration d'un hôte/serveur virtuel

Un hôte virtuel est une configuration qui permet à un serveur de servir ou d'héberger un ou plusieurs sites web. Cette configuration permet de simplier la gestion des serveurs. Chaque site web sera configuré à l'intérieur d'un bloc server. Les configurations sont faites dans le repertoire /etc/nginx/conf.d où il peut il y avoir plusieurs fichiers de configurations .conf . Par défaut, le répertoire conf.d contient le fichier suivant default.conf :

  • le bloc server: représente la configuration pour un serveur virtuel. Il est possible de configurer plusieurs blocs server dans un même fichier .conf pour différents sites. Chaque bloc server définit dans ce cas, des configurations ou paramètres distincts pour différents sites.

  • listen: définit le port sur lequel le serveur écoute les requêtes

  • server_name: définit le nom du serveur virtuel

  • le bloc location: définit le traitement des requêtes à des emplacements spécifiques.

  • root: définit le répertoire racine

  • index: définit les fichiers index par défaut

  • error_page: définit les pages d'erreur qui peuvent être personnalisées en fonction du code d'erreur.

Création d'un site

Ici, on va faire afficher une autre page web assez simple à la place de index.html. Il suffit de créer une page html, ou si vous avez déjà un site web à afficher. Placez ensuite le chemin au niveau de root dans le fichier default.conf.

Ici on a mis le port 8080 car le port 80 est déja lié au serveur par default.conf.

.

Après chaque modification, il faut faire systemctl restart ngix pour redémarrez et pour vérifier qu'il n'y ait pas d'erreurs potentielles dans le fichier .conf, exécutez la commande nginx -t

Ajout d'un module SSL pour sécuriser NGINX avec LetsEncrypt

Pour cette partie, il faudra que vous ayez un site accessible et soyez propriétaires d'un nom de domaine et configuré le DNS. Ici on a bien une connexion http, non sécurisée.

Faire la mise à jour des paquets

sudo  apt-get update

Installer Certbot et le module pour NGINX . Certbot est un outil qui facilite la demande et l'installation des certificats SSL de Let's Encrypt.

sudo apt-get install certbot python3-certbot-nginx

Utilisez Certbot pour demander un certificat SSL et configurer NGINX automatiquement. Remplacez website.com par votre propre nom de domaine ou de votre sous-domaine.
***(--nginx pour prexiser qu'on a un serveur nginx)

 sudo certbot --nginx -d website.com

Après une série de questions, le certifcat et la clé privée seront délivreés dans un repertoire automatiquement créé /etc/letsencrypt/. Ils seront automatiquement intégrés dans la configuration de NGINX.

Le fichier de configuration de NGINX sera automatiquement modifié et les certifcats SSL seront ajoutés.Vous pouvez cependant les ajuster si nécessaire pour éviter les conflits.

Voici un exemple de configuration SSL que vous pourriez avoir dans votre fichier

On voit qu’on a bien un serveur sécurisé avec HTTPS.
Il est aussi important de noter que Let’s Encrypt ne délivre que des certificats SSL aux sites accesibles publiquement, et pas ceux en local. Pour les sites internes ou locaux, vous pouvez utiliser des certificats auto-signés ou des certificats payants auprès d’autorités de certificats.

L'installation et la configuration de NGINX sur Debian permettent de créer un serveur web performant et sécurisé. En suivant les étapes décrites, vous pouvez facilement déployer NGINX et sécuriser vos sites web avec des certificats SSL.

Did you find this article valuable?

Support FIKARA BILAL by becoming a sponsor. Any amount is appreciated!