Faire du proxy avec apache pour eviter d’attendre des propagations DNS

J’ai souvent entendu des prestataires expliquer au client que la migration d’un nouveau site peut être longue à cause du temps de propagation DNS, petite explication:

Les serveurs DNS (domain name serveur) ou serveurs de noms sont (en gros) des bases de données où sont stockées les binômes adresseIp/nom de domaine, cela afin de retrouver l’ip quand on à le domaine et inversement. Quand vous tappez un nom de domaine dans votre navigateur, un serveur DNS est interrogé (ou un cache dns) pour savoir sur quelle machine (adresse ip) il faut taper.

Il existe surement des milliers de serveurs DNS dans le monde, et ceux-ci fonctionne en mode asynchrone.
Lorsque vous modifiez les DNS d’un nom de domaine, la modification n’est bien entendu pas prise en compte directement sur tous les serveurs DNS, le laps de temps qui défini chaque rafraichissement de ces données DNS est le TTL (time to live) du DNS.
Il est fortement conseillé de baisser ce TTL lorsque vous effectuez une migration mais attention, il ne fait pas le faire à la dernière minutes.
Si votre TTL est de 24 heures (valeur moyenne) cela veut dire qu’au pire des cas, vos modifications peuvent être prisent en compte 24h après.
N’oubliez pas aussi que votre machine (windows, linux ou mac) possèdent leurs propres cache DNS.

Ceci étant, afin de contourner tout cela de manière provisoire je vous propose d’utiliser le mod_proxy d’apache afin de faire des migrations en prod en un clin d’oeil et parfaitement contrôlées.

Ingrédients:

– Apache2 (ca doit fonctionner avec apache 1.3.x)

– mod_proxy (sous debian, sudo a2enmod proxy, puis un reload d’apache)

Recette:

Le but ici est de remplacer le contenu d’un site par un nouveau contenu, tout deux sur des urls différents sans que l’utilisateur ne s’aperçoit de rien.

Vous avez votre ancien site qui va bientôt prendre sa retraite : www.monsite.com

Vous avez votre nouveau site dont l’url sera au final www.monsite.com mais que vous également avez rendu accessible sur une autre url (alias) parce que c’est mieux pour ce qu’on veut faire ex: monsite.maboite.org

Après s’être assuré que le mod_proxy est activé (voir ingrédients) il vous suffit d’ajouter ceci dans votre conf apache (ex /etc/apache2/sites-enabled/monsite.com) :


  ServerName www.monsite.com
  ProxyPass / http://monsite.maboite.org/
  ProxyPassReverse / http://monsite.maboite.org/

    Order deny,allow
    Deny from all
    Allow from all
  

Après un reload d’apache, l’url www.monsite.com devrais afficher le même contenu que monsite.maboite.org.
Voila, bon appétit.