Nginx et les blocs de serveur
Notions théoriques
Nginx (prononcé "Engine X") est un serveur Web et proxy inverse performant et léger.
Nginx est souvent utilisé pour :
- servir des sites Web,
- gérer des proxys pour des applications Web (comme Node.js ou Django),
- et optimiser les performances via des fonctionnalités (comme la mise en cache ou l’équilibrage de charge).
- Un serveur Web Nginx écoute généralement sur le port 80 pour le protocole HTTP.
- Pour le protocole HTTPS (sécurisé via TLS), Nginx écoute généralement sur le port 443.
Blocs de serveur (server blocks)
Un bloc de serveur (l'équivalent des virtualhosts dans Apache) est une fonctionnalité qui permet à Nginx de servir plusieurs sites Web sur une seule machine.
Chaque bloc est défini dans un fichier de configuration, précisant un nom de domaine, un répertoire racine, etc.
Pour configurer des blocs de serveur, il faut définir des fichiers dans le répertoire /etc/nginx/sites-available/
. Ensuite, on active ces configurations en créant un lien symbolique vers /etc/nginx/sites-enabled/
.
Détails des principaux fichiers de configuration de Nginx
Fichier ou répertoire | Description |
---|---|
/etc/nginx/nginx.conf | Fichier de configuration principal de Nginx. |
/etc/nginx/sites-available/ | Fichiers de configuration des blocs de serveur, qui peuvent être activés. |
/etc/nginx/sites-enabled/ | Blocs de serveur activés (liens symboliques vers /sites-available/ ). |
/etc/nginx/conf.d/ | Fichiers de configuration supplémentaires (souvent pour les modules ou extensions). |
/var/www/ | Emplacement par défaut des fichiers des sites Web. |
/var/log/nginx/ | Répertoires pour les fichiers de logs d’erreur et d’accès de Nginx. |
Exemple pratique
Étapes pour configurer et servir 2 sites Web avec Nginx
-
Installer Nginx :
Sur un système basé sur Debian, utilisez les commandes suivantes :
sudo apt update
sudo apt install nginxUne fois installé, vérifiez que Nginx fonctionne :
sudo systemctl status nginx
ou
sudo service nginx status
-
Créer les répertoires pour les sites Web :
Nous allons créer deux sites Web,
site1
etsite2
.sudo mkdir -p /var/www/site1
sudo mkdir -p /var/www/site2Créez un fichier
index.html
pour chacun des sites :echo "Bienvenue sur site1.fr" | sudo tee /var/www/site1/index.html
echo "Bienvenue sur site2.fr" | sudo tee /var/www/site2/index.html -
Créer les fichiers de configuration des blocs de serveur :
-
Créez un fichier pour le site1 :
sudo nano /etc/nginx/sites-available/site1
Ajoutez la configuration suivante :
server {
listen 80;
server_name site1.fr;
root /var/www/site1;
index index.html;
location / {
try_files $uri $uri/ =404;
}
} -
Créez un fichier pour le site2 :
sudo nano /etc/nginx/sites-available/site2
Ajoutez la configuration suivante :
server {
listen 80;
server_name site2.fr;
root /var/www/site2;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
-
-
Activer les blocs de serveur :
Activez les configurations en créant des liens symboliques :
sudo ln -s /etc/nginx/sites-available/site1 /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2 /etc/nginx/sites-enabled/ -
Vérifier la configuration de Nginx :
Avant de redémarrer Nginx, vérifiez que les fichiers de configuration sont corrects :
sudo nginx -t
Si tout est valide, redémarrez Nginx :
sudo systemctl restart nginx
ou
sudo service nginx restart
-
Configurer le fichier
hosts
sur la machine cliente :Si vous n'avez pas de serveur DNS, modifiez le fichier
hosts
de votre machine cliente pour résoudre les noms de domainesite1.fr
etsite2.fr
:ip_serveur site1.fr
ip_serveur site2.frinfoLe fichier
hosts
agit comme une base de données locale permettant de résoudre les noms de domaine. Cela est particulièrement utile dans des environnements de test où un serveur DNS n’est pas configuré. -
Tester dans un navigateur :
Ouvrez un navigateur et accédez à
http://site1.fr
ethttp://site2.fr
. Vous devriez voir les messages correspondants à vos fichiers HTML.
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Dans ce TP, vous allez mettre en place 2 autres sites Web sur le même serveur Nginx :
- à l'adresse
http://portfolio.local
un portfolio pour présenter vos compétences et réalisations,
- et à l'adresse
http://projet.local
un site pour l'un de vos projets informatiques.
Étapes :
- Créez les répertoires et les fichiers HTML pour les deux sites.
- Créez les fichiers de configuration des blocs de serveur pour
portfolio.local
etprojet.local
. - Activez les blocs de serveur avec des liens symboliques.
- Vérifiez et redémarrez Nginx.
- Modifiez le fichier
hosts
sur votre machine cliente. - Testez vos deux sites.
Exemple de contenu pour le fichier HTML de portfolio.local
:
<!DOCTYPE html>
<html>
<head>
<title>Portfolio</title>
</head>
<body>
<h1>Bienvenue sur mon portfolio !</h1>
<p>Découvrez mes projets et mes compétences ici.</p>
</body>
</html>
Une solution
Vous devez être connecté pour voir le contenu.