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 exempledatadown.fr
) de la requête client au serveur backend (icihttp://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’adressehttp://10.10.70.209/
. Autrement dit, les utilisateurs accédant àhttp://datadown.fr
seront servis par le contenu disponible surhttp://10.10.70.209/
.ProxyPassReverse / http://10.10.70.209/
Cette directive complèteProxyPass
en modifiant les en-têtes de réponse HTTP (commeLocation
ouSet-Cookie
) pour refléter l’URL publique (exempledatadown.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 (iciaccess.log
). Le formatcombined
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 😉