Aller au contenu principal

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).
info
  • 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épertoireDescription
/etc/nginx/nginx.confFichier 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

  1. Installer Nginx :

    Sur un système basé sur Debian, utilisez les commandes suivantes :

    sudo apt update
    sudo apt install nginx

    Une fois installé, vérifiez que Nginx fonctionne :

    sudo systemctl status nginx

    ou

    sudo service nginx status
  2. Créer les répertoires pour les sites Web :

    Nous allons créer deux sites Web, site1 et site2.

    sudo mkdir -p /var/www/site1
    sudo mkdir -p /var/www/site2

    Cré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
  3. 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;
      }
      }
  4. 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/
  5. 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
  6. 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 domaine site1.fr et site2.fr :

    ip_serveur site1.fr
    ip_serveur site2.fr
    info

    Le 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é.

  7. Tester dans un navigateur :

    Ouvrez un navigateur et accédez à http://site1.fr et http://site2.fr. Vous devriez voir les messages correspondants à vos fichiers HTML.


Test de mémorisation/compréhension


Qu'est-ce que Nginx ?


À quoi sert un bloc de serveur dans Nginx ?


Où se trouvent les fichiers de configuration des blocs de serveur ?


Quelle commande permet de vérifier la validité de la configuration Nginx ?



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 :

  1. Créez les répertoires et les fichiers HTML pour les deux sites.
  2. Créez les fichiers de configuration des blocs de serveur pour portfolio.local et projet.local.
  3. Activez les blocs de serveur avec des liens symboliques.
  4. Vérifiez et redémarrez Nginx.
  5. Modifiez le fichier hosts sur votre machine cliente.
  6. 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