J'ai actuellement un nom de domaine enregistré pour un serveur Linux / Apache que je vais remplacer par un autre sur une nouvelle adresse IP.
La migration des données sera relativement rapide et une interruption de 5 minutes au cours de ce processus est acceptable.
L'enregistrement DNS a un TTL de 6 à 12 heures apparemment, que je ne peux pas accélérer.
Quelles sont les conséquences probables de ce changement? Vraisemblablement, les utilisateurs qui regardent toujours l'ancienne adresse continueront de frapper l'ancien serveur, tandis que les utilisateurs dont le cache DNS est expiré ou vide verront le nouveau domaine.
Est-il possible de faire une sorte de redirection de l'ancien serveur (avec Apache ou iptables) vers la nouvelle IP? L'ancien serveur peut continuer à fonctionner aussi longtemps que nécessaire.
Réponses:
Vous pouvez utiliser un proxy inverse sur l'ancien serveur Web. Cela peut être un peu difficile à configurer, mais tant que ITS DNS est à jour, tout ira bien.
Ce qui va arriver, c'est:
Si vous exécutez Apache, regardez dans mod_proxy. Si vous exécutez IIS, examinez la réécriture ISAPI pour obtenir ce type de fonctionnalité.
(notez que le DNS sur l'ancien serveur Web doit être à jour si vous souhaitez utiliser un proxy en utilisant le nom de domaine. Sinon, le proxy directement à l'adresse IP et assurez-vous que l'hôte écoute sur l'IP sans nom d'hôte)
la source
/etc/hosts
123.456.789.12 my.domain.com
Ceci ne fera que votre ancien serveur Web connaître l'adresse mise à jour. Lorsqu'un client accède à l'ancien serveur Web (car il n'a pas de DNS mis à jour), le serveur Web peut proxy la demande en utilisant le nom de domaine. Je n'utilise pas Apache mais voici un exemple Nginx: gist.github.com/scragg0x/738f144b33d17ef763d1Mon entreprise vient de le faire avec plusieurs sites Web de grande taille. La procédure de base que nous avons suivie était la suivante:
Pour Apache, vous devriez probablement utiliser mod_rewrite pour la redirection afin de pouvoir conserver les URI demandés par le client. Une implémentation simple serait:
Cela fera une redirection temporaire 302 pour www.domain.com/anything vers www-new.domain.com/anything. Vous voulez que ce soit temporaire car vous voulez probablement que les moteurs de recherche indexent uniquement www.domain.com, pas www-new.domain.com.
Une fois que le changement DNS pour www.domain.com s'est propagé à votre satisfaction, vous pouvez soit vider complètement www-new, soit faciliter doucement toute personne l'utilisant de nouveau vers www avec une autre redirection. C'est presque le même processus que ci-dessus; configurez l'ancien serveur pour gérer www-new, modifiez le DNS pour que www-new pointe vers l'ancien serveur et configurez une redirection sur l'ancien serveur en envoyant le trafic www-new vers www:
Cette fois, vous voulez faire une redirection 301 permanente, encore une fois pour indiquer dans les robots des moteurs de recherche que www.domain.com est le site que vous souhaitez qu'ils indexent.
la source
Ok, sur la base de ce que @Farseeker a recommandé, j'ai mis en place la configuration suivante sur l'ancien serveur Apache pour transférer les requêtes sur le nouveau serveur:
Pour m'assurer que l'ancien serveur avait la bonne adresse, j'ai mis une entrée dans
/etc/hosts
:J'ai également dû activer Apache
mod_proxy
et lesmod_proxy_http
modules et recharger la configuration:la source
C'est un vieux fil mais peut-être que cela aidera quelqu'un:
En plus des réponses de Mark Henderson (mod_proxy) OU de James Sneeringer (302 301 redirection vers de nouveaux sous-domaines), une dernière chose pourrait être ajoutée concernant la synchronisation de la base de données lors du déplacement de grandes applications.
Si votre projet Web utilise une base de données (ex. MySQL), avant de changer de DNS, assurez-vous que les applications (ex. PHP) des deux serveurs se connectent à la même base de données. Pour que la lecture et l'écriture se fassent au même endroit et que vous n'ayez plus à vous occuper de différents outils de synchronisation DB par la suite.
Cela affecterait (très probablement) le temps de chargement sur un serveur, mais pour la période de commutation, cela peut être accepté.
Dans le cas où le serveur de base de données n'est pas accessible de l'extérieur, vous pouvez également configurer le mysql_proxy sur le serveur Web qui y a accès et est accessible à partir d'adresses IP externes.
la source
J'utilise iptables pour cela lorsque je dois le faire; un peu de DNAT / SNAT et tout votre trafic réapparaît comme par magie. Si vous avez vraiment besoin de maintenir les adresses IP source, un proxy inverse peut vous aider, en définissant les en-têtes appropriés, mais cela nécessite beaucoup de faffings aux deux extrémités pour vous assurer que tout correspond, donc je ne m'inquiète pas normalement à ce sujet pour quelque chose comme une migration car elle est transitoire, et l'abaissement des TTL gère la majeure partie.
la source