Debian – Configurer un reverse proxy

Debian – Configurer un reverse proxy

Un reverse proxy agit comme une passerelle entre les utilisateurs et vos serveurs backend, redirigeant les requêtes clients tout en masquant l’infrastructure sous-jacente. Son utilisation offre plusieurs avantages, notamment l’amélioration de la sécurité en cachant les adresses IP des serveurs, l’équilibrage de charge pour répartir le trafic entre plusieurs serveurs, et la mise en cache pour optimiser les performances des applications web. De plus, il simplifie la gestion des certificats SSL et des configurations réseau.

Étape 1 :

Connectez vous en ssh sur le serveur de reverse proxy

ssh [utilisateur]@[ip_machine_distante]

Étape 2 :

Mettez à jour les paquets

apt-get update -y

Étape 3 :

Installez Apache2

apt-get install apache2

Étape 4 :

Reverse proxy est un mode et pour cela il faut activer 2 modules : proxy et proxy_http

a2enmod proxy proxy_http

Étape 5 :

On redémarre les services

systemctl restart apache2

Étape 6 :

Voici un exemple de configuration

cd /etc/apache2/sites-available
nano siteweb01.conf

<VirtualHost *:80>
    ServerAdmin [adresse_mail_support]
    ServerName datadown.fr

    ProxyPreserveHost On

    ProxyPass / http://10.10.70.209/
    ProxyPassReverse / http://10.10.70.209/

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Voici une explication :

  • <VirtualHost *:80> Cette ligne définit un VirtualHost qui écoute sur le port 80 (HTTP) pour toutes les adresses IP (*). Cela signifie que ce bloc de configuration s’appliquera à toutes les requêtes entrantes sur ce port.
  • ServerAdmin contact@exemple.fr Ce champ spécifie l’adresse e-mail de l’administrateur du site. Si un utilisateur rencontre une erreur serveur, cette adresse peut être affichée pour qu’il puisse contacter le responsable.
  • ServerName datadown.fr Ce champ déclare le nom de domaine principal pour ce VirtualHost. Apache utilisera ce domaine pour identifier les requêtes associées à ce bloc de configuration.
  • ProxyPreserveHost On Cette directive indique à Apache de transmettre le Host header original (par exemple datadown.fr) de la requête client au serveur backend (ici http://10.10.70.209/). Cela permet au serveur backend de savoir pour quel domaine la requête est destinée, ce qui est souvent essentiel dans les environnements multi-domaines.
  • ProxyPass / http://10.10.70.209/ Cette ligne configure le reverse proxy. Elle redirige toutes les requêtes entrantes (/) vers le serveur backend situé à l’adresse http://10.10.70.209/. Autrement dit, les utilisateurs accédant à http://datadown.fr seront servis par le contenu disponible sur http://10.10.70.209/.
  • ProxyPassReverse / http://10.10.70.209/ Cette directive complète ProxyPass en modifiant les en-têtes de réponse HTTP (comme Location ou Set-Cookie) pour refléter l’URL publique (exemple datadown.fr) au lieu de l’URL interne du backend (http://10.10.70.209/). Cela assure une cohérence pour l’utilisateur final.
  • ErrorLog ${APACHE_LOG_DIR}/error.log Cette ligne spécifie l’emplacement où Apache enregistrera les erreurs liées à ce VirtualHost. La variable ${APACHE_LOG_DIR} est généralement définie dans la configuration globale, souvent pointant vers /var/log/apache2.
  • CustomLog ${APACHE_LOG_DIR}/access.log combined Cette directive configure l’enregistrement des requêtes réussies dans un fichier de log d’accès (ici access.log). Le format combined inclut des informations détaillées sur chaque requête, comme l’IP client, l’URL demandée, le code de réponse HTTP, etc.

Un fois fait, il faut désactiver la configuration par défaut

a2dissite 000-default.conf

Redémarrez le service

systemctl reload apache2

Ensuite, activez la configuration du fichier

a2ensite siteweb01.conf

Puis, redémarrez les services

systemctl reload apache2

Et voila ! La configuration d’un reverse proxy peut être très utile quand vous hébergez plusieurs site web 😉

Comments

No comments yet. Why don’t you start the discussion?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *