Mise en Place d’un Reverse Proxy avec VirtualBox

Objectif

Le but de ce TP est de mettre en place un reverse proxy utilisant Nginx sur une machine virtuelle, et de configurer une redirection vers plusieurs services web hébergés sur d’autres machines virtuelles.

Matériel Nécessaire

  • VirtualBox installé sur votre machine hôte
  • ISO de Debian ou Ubuntu Server (disponible gratuitement en ligne)
  • Connexion internet

Prérequis

  • Connaissances de base en réseau et en administration système Linux
  • Connaissances de base en virtualisation avec VirtualBox

Étape 1 : Création des Machines Virtuelles

  1. Téléchargez l’ISO de Debian/Ubuntu Server :
  2. Créez trois machines virtuelles (VM) dans VirtualBox :
    • Une VM pour le reverse proxy (nommée reverse-proxy)
    • Deux VM pour les services web (nommées web-server1 et web-server2)
  3. Configurez les machines virtuelles :
    • Attribuez au moins 1 Go de RAM et 10 Go de disque pour chaque VM.
    • Montez l’ISO de Debian/Ubuntu Server comme lecteur de CD/DVD.
  4. Installez le système d’exploitation :
    • Suivez les instructions d’installation de l’OS.
    • Configurez un utilisateur avec les droits sudo.
    • Configurez une adresse IP statique pour chaque VM.

Étape 2 : Configuration des Serveurs Web

  1. Connectez-vous à web-server1 et installez Apache :
    bash

    sudo apt update
    sudo apt install apache2 -y
  2. Modifiez la page d’accueil pour identifier web-server1 :
    bash

    echo "Web Server 1" | sudo tee /var/www/html/index.html
  3. Répétez les mêmes étapes sur web-server2, en modifiant la page d’accueil pour identifier web-server2 :
    bash

    sudo apt update
    sudo apt install apache2 -y
    echo "Web Server 2" | sudo tee /var/www/html/index.html

Étape 3 : Configuration du Reverse Proxy

  1. Connectez-vous à la VM reverse-proxy et installez Nginx :
    bash

    sudo apt update
    sudo apt install nginx -y
  2. Configurez Nginx comme reverse proxy :
    • Ouvrez le fichier de configuration par défaut de Nginx :
      bash

      sudo nano /etc/nginx/sites-available/default
    • Remplacez le contenu par le suivant :
      nginx

      server {
      listen 80;

      location / {
      proxy_pass http://web-server1_ip;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      }

      location /server2 {
      proxy_pass http://web-server2_ip;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;
      }
      }

    • Remplacez web-server1_ip et web-server2_ip par les adresses IP de vos serveurs web respectifs.
  3. Redémarrez Nginx pour appliquer les changements :
    bash

    sudo systemctl restart nginx

Étape 4 : Test de la Configuration

  1. Depuis votre machine hôte, ouvrez un navigateur web et accédez à l’adresse IP de reverse-proxy.
    • Vous devriez voir la page de web-server1.
  2. Accédez à l’URL http://reverse-proxy_ip/server2.
    • Vous devriez voir la page de web-server2.

Étape 5 : Validation

  1. Vérifiez que les configurations de vos machines virtuelles sont correctes.
    • Utilisez la commande ping pour tester la connectivité entre les VMs.
  2. Vérifiez les fichiers de log de Nginx pour tout problème potentiel :
    bash

    sudo tail -f /var/log/nginx/error.log