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.
Mettre à jour les paquets
sudo apt update sudo apt upgrade
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
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
Installer NGINX
sudo apt update sudo apt install nginx
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.