Imaginons que le site web d’adresse http://www.example.com soit hébergé sur un serveur dédié  d’IP 10.1.1.1 chez webhoster1. On souhaite déplacer le site web (fichiers et base de données) sur un serveur chez webhoster2. En changeant d’hébergeur, l’IP attribuée va aussi changer, par exemple pour 10.2.1.1. Il n’est pas rare que le TTL d’un enregistrement DNS soit de 1 ou 2 jours. Cela signifie qu’en changeant l’IP de www.example.com de 10.1.1.1 à 10.2.1.1, il est possible que les visiteurs du site aient la mauvaise adresse pendant 1 ou 2 jours ! Et donc qu’ils “arrivent” sur l’ancien au lieu du nouveau.
Une solution à ce problème consiste à configurer l’ancien serveur comme un Reverse Proxy de sorte que si des visiteurs accèdent au “mauvais” serveur, ils obtiennent le bon contenu.

  • Convertir l’ancien serveur en reverse proxy

Vérifier dans la configuration apache que le module mod_proxy est bien présent :

LoadModule proxy_module modules/mod_proxy.so

Modifier le VirtualHost du site www.example.com de la sorte :

1
2
3
4
5
6
<VirtualHost *:80>
ServerName www.example.com
ProxyPass / http://10.2.1.1/
ProxyPassReverse / http://10.2.1.1/
ProxyPreserveHost On
</VirtualHost>

Plus d’informations dans la documentation officielle : mod_proxy
Recharger la configuration :

apache2ctl configtest
apache2ctl graceful
  • Configurer le site sur le nouveau serveur

Configurer le VirtualHost pour www.example.com tel qu’il était sur l’ancien serveur.
Transférer les fichiers du site et sa base de données.
Aller chez le registrar où example.com est enregistré et faire pointer le host www vers la nouvelle adresse IP.

  • Tests

Les nouveaux visiteurs iront directement sur le nouveau serveur car ils auront la bonne adresse IP du site. Les visiteurs qui reviennent, eux, risquent d’avoir l’ancienne IP en cache (problème du TTL), ils accèderont à l’ancien serveur. Ce serveur sera “ira” télécharger le site depuis le “bon” serveur et le renverra au visiteur (mod_proxy).