Ich habe derzeit einen Domainnamen für einen Linux / Apache-Server registriert, den ich unter einer neuen IP-Adresse durch einen anderen ersetzen werde.
Die Migration der Daten ist relativ schnell und eine Unterbrechung von 5 Minuten während dieses Vorgangs ist akzeptabel.
Der DNS-Eintrag hat anscheinend eine TTL von 6-12 Stunden, die ich nicht beschleunigen kann.
Was sind die wahrscheinlichen Folgen dieser Änderung? Vermutlich werden Benutzer, die immer noch auf die alte Adresse schauen, weiterhin auf den alten Server zugreifen, während Benutzer, deren DNS-Cache abgelaufen ist oder leer ist, die neue Domäne sehen.
Ist es möglich, eine Art Umleitung vom alten Server (mit Apache oder iptables) zur neuen IP durchzuführen? Der alte Server kann so lange wie nötig weiterlaufen.
Antworten:
Sie können einen Reverse Proxy auf dem alten Webserver verwenden. Das Einrichten ist möglicherweise etwas aufwendig, aber solange ITS DNS auf dem neuesten Stand ist, sind Sie in Ordnung.
Was passieren wird ist:
Wenn Sie Apache ausführen, schauen Sie in mod_proxy nach. Wenn Sie IIS ausführen, schauen Sie in ISAPI Rewrite nach, um diese Art von Funktionalität zu erhalten.
(Beachten Sie, dass der DNS auf dem alten Webserver auf dem neuesten Stand sein muss, wenn Sie einen Proxy mit dem Domänennamen verwenden möchten. Andernfalls stellen Sie ihn direkt an die IP-Adresse weiter und stellen Sie sicher, dass der Host die IP ohne Hostnamen überwacht.)
quelle
/etc/hosts
123.456.789.12 my.domain.com
Dies wird Ihrem alten Webserver nur die aktualisierte Adresse mitteilen . Wenn ein Client auf den alten Webserver zugreift (da er kein aktualisiertes DNS hat), kann der Webserver die Anforderung unter Verwendung des Domänennamens als Proxy verwenden. Ich benutze Apache nicht, aber hier ist ein Nginx-Beispiel: gist.github.com/scragg0x/738f144b33d17ef763d1Meine Firma hat dies gerade mit mehreren größeren Websites getan. Das grundlegende Verfahren, das wir befolgten, war:
Für Apache sollten Sie wahrscheinlich mod_rewrite für die Umleitung verwenden, damit Sie die vom Client angeforderten URIs beibehalten können. Eine einfache Implementierung wäre:
Dadurch wird eine vorübergehende 302-Umleitung für www.domain.com/anything zu www-new.domain.com/anything durchgeführt. Sie möchten, dass es nur vorübergehend ist, da Suchmaschinen wahrscheinlich nur www.domain.com und nicht www-new.domain.com indizieren sollen.
Sobald sich die DNS-Änderung für www.domain.com zu Ihrer Zufriedenheit verbreitet hat, können Sie entweder www-new insgesamt sichern oder jeden, der sie verwendet, mit einer anderen Weiterleitung sanft auf www zurücksetzen. Es ist fast der gleiche Prozess wie oben; Richten Sie den alten Server für die Verarbeitung von www-new ein, ändern Sie DNS für www-new so, dass er auf den alten Server verweist, und richten Sie eine Umleitung auf dem alten Server ein, die www-new-Datenverkehr an www sendet:
Dieses Mal möchten Sie eine permanente 301-Weiterleitung durchführen, um in Suchmaschinen-Crawlern erneut darauf hinzuweisen, dass www.domain.com die Site ist, die sie indizieren sollen.
quelle
Ok, basierend auf den Empfehlungen von @Farseeker habe ich die folgende Konfiguration auf dem alten Apache-Server eingerichtet, um Anforderungen an den neuen Server weiterzuleiten:
Um sicherzustellen, dass der alte Server die richtige Adresse hat, habe ich einen Eintrag eingegeben in
/etc/hosts
:Ich musste auch den Apache
mod_proxy
und diemod_proxy_http
Module aktivieren und die Konfiguration neu laden:quelle
Es ist ein alter Thread, aber vielleicht hilft es jemandem:
Zusätzlich zu den Antworten von Mark Henderson (mod_proxy) ODER James Sneeringer (302.301 Weiterleitung zu neuen Subdomains) könnte beim Verschieben großer Anwendungen noch etwas zur Datenbanksynchronisierung hinzugefügt werden.
Wenn Ihr Webprojekt eine Datenbank (z. B. MySQL) verwendet, stellen Sie vor dem Umschalten des DNS sicher, dass die Anwendungen (z. B. PHP) von beiden Servern eine Verbindung zu derselben Datenbank herstellen. Damit das Lesen und Schreiben an den gleichen Ort geht und Sie sich danach nicht mehr mit verschiedenen DB-Synchronisierungstools befassen müssen.
Dies würde (höchstwahrscheinlich) die Ladezeit auf einem Server beeinflussen, kann jedoch für den Wechselzeitraum akzeptiert werden.
Falls auf den DB-Server von außen nicht zugegriffen werden kann , können Sie auch den mysql_proxy auf dem Webserver einrichten, der Zugriff darauf hat und von externen IPs aus zugänglich ist.
quelle
Ich benutze dafür iptables, wenn ich das tun muss; Ein kurzes Stück DNAT / SNAT und all Ihr Verkehr erscheint auf magische Weise wieder dort, wo er sein sollte. Wenn Sie wirklich die Quell-IP-Adressen pflegen müssen, kann ein Reverse-Proxy helfen, indem Sie geeignete Header festlegen. Dies erfordert jedoch viel Aufwand an beiden Enden, um sicherzustellen, dass alles übereinstimmt, sodass ich mir normalerweise keine Sorgen darüber mache für so etwas wie eine Migration, da sie vorübergehend ist und das Verringern von TTLs das meiste davon erledigt.
quelle