Ich habe meiner Heroku-App bereits eine benutzerdefinierte Domain hinzugefügt, mit der es funktioniert www.domain.com
.
Ich muss wissen, wie man die Domain einrichtet, ohne www
sie auch in die App aufzulösen.
Hier sind meine aktuellen DNS-Einstellungen:
$TTL 86400
@ IN SOA ns1.first-ns.de. postmaster.robot.first-ns.de. (
2013041500 ; serial
14400 ; refresh
1800 ; retry
604800 ; expire
86400 ) ; minimum
@ IN NS robotns3.second-ns.com.
@ IN NS robotns2.second-ns.de.
@ IN NS ns1.first-ns.de.
@ IN A 88.198.38.XXX
localhost IN A 127.0.0.1
mail IN A 88.198.38.XXX
ftp IN CNAME www
imap IN CNAME www
loopback IN CNAME localhost
pop IN CNAME www
relay IN CNAME www
smtp IN CNAME www
www IN CNAME appname.herokuapp.com.
@ IN MX 10 mail
Was sind die richtigen Einstellungen, damit beide example.com
und www.example.com
korrekt auf meine Heroku-App verweisen?
Antworten:
(Hinweis: Root-, Base- und Apex-Domains sind alle gleich. Austauschbar für Google-Foo.)
Um auf Ihre Apex-Domain zu verweisen, verwenden Sie normalerweise einen A-Datensatz, der auf die IP Ihres Servers verweist. Diese Lösung lässt sich nicht skalieren und ist für eine Cloud-Plattform wie Heroku nicht geeignet, bei der mehrere und häufig wechselnde Backends für die Beantwortung von Anfragen verantwortlich sind.
Für Subdomains (wie
www.example.com
) können Sie CNAME-Datensätze verwenden, auf die verwiesen wirdyour-app-name.herokuapp.com
. Von da an verwaltet Heroku die dahinter stehenden dynamischen A-Datensätzeyour-app-name.herokuapp.com
so, dass sie immer auf dem neuesten Stand sind. Leider erlaubt die DNS-Spezifikation keine CNAME-Einträge auf der Zonenspitze (der Basisdomäne). (Zum Beispiel würden MX-Datensätze brechen, wenn der CNAME zuerst seinem Ziel folgt.)Zurück zu den Stammdomänen besteht die einfache und generische Lösung darin, sie überhaupt nicht zu verwenden. Als Fallback-Maßnahme bieten einige DNS-Anbieter an, eine HTTP-Umleitung für Sie einzurichten. Richten Sie es in diesem Fall so ein, dass
example.com
eine HTTP-Umleitung zu erfolgtwww.example.com
.Einige DNS-Anbieter haben benutzerdefinierte Lösungen entwickelt, die ein CNAME-ähnliches Verhalten auf der Zonenspitze ermöglichen. Meines Wissens haben wir den ALIAS-Eintrag von DNSimple und den ANAME-Eintrag von DNS Made Easy . beide verhalten sich ähnlich.
Mit diesen können Sie Ihre Datensätze wie folgt einrichten (mithilfe der Zonendatei-Notation, obwohl Sie dies wahrscheinlich auf der Webbenutzeroberfläche tun werden):
Denken Sie daran,
@
hier ist eine Abkürzung für die Root-Domain (example.com
). Beachten Sie auch, dass die nachfolgenden Punkte sowohl in Zonendateien als auch in einigen Webbenutzeroberflächen wichtig sind.Siehe auch:
Bemerkungen:
Die Route 53 von Amazon verfügt ebenfalls über einen ALIAS-Datensatztyp, der jedoch insofern etwas eingeschränkt ist, als er nur auf AWS verweist. Im Moment würde ich nicht empfehlen, dies für ein Heroku-Setup zu verwenden.
Einige Leute verwechseln DNS-Anbieter mit Domainnamen-Registraren, da es einige Überschneidungen mit Unternehmen gibt, die beides anbieten. Beachten Sie jedoch, dass Sie zum Umschalten Ihres DNS auf einen der oben genannten Anbieter nur Ihre Nameserver-Einträge mit Ihrem aktuellen Domain-Registrar aktualisieren müssen. Sie müssen Ihre Domain-Registrierung nicht übertragen.
quelle
Um Ihre Apex- / Root- / Naked-Domain auf eine von Heroku gehostete Anwendung zu verweisen, müssen Sie einen DNS-Anbieter verwenden, der CNAME-ähnliche Einträge unterstützt (häufig als ALIAS- oder ANAME-Einträge bezeichnet). Derzeit empfiehlt Heroku :
Unabhängig davon, welche von Ihnen Sie auswählen, sieht Ihre Aufzeichnung wie folgt aus:
Aufzeichnung:
ALIAS
oderANAME
Name: leer oder
@
Ziel:
example.com.herokudns.com.
Das ist alles was du brauchst.
Es ist jedoch nicht gut für SEO , wenn sowohl die WWW-Version als auch die Nicht-WWW-Version aufgelöst werden. Einer sollte auf den anderen als kanonische URL verweisen. Wie Sie sich dafür entscheiden, hängt davon ab, ob Sie HTTPS verwenden oder nicht. Wenn Sie dies nicht tun, sollten Sie wahrscheinlich so sein, wie Heroku SSL-Zertifikate jetzt automatisch und kostenlos für alle Anwendungen verarbeitet, die auf kostenpflichtigen Prüfständen ausgeführt werden.
Wenn Sie nicht HTTPS verwenden, können Sie nur eine 301 - Redirect Rekord mit den meisten DNS - Anbieter zeigt Namen einrichten
www
zuhttp://example.com
.Wenn Sie sind HTTPS verwenden, werden Sie wahrscheinlich Notwendigkeit , die Umleitung auf der Anwendungsebene zu behandeln. Wenn Sie wissen möchten, warum, lesen Sie diese kurzen und langen Erklärungen. Da Ihr DNS-Anbieter oder ein anderer URL-Weiterleitungsdienst jedoch nicht über Ihr SSL-Zertifikat und Ihren privaten Schlüssel verfügt und dies auch nicht tun sollte, können sie nicht auf HTTPS reagieren Anfragen für Ihre Domain.
Um die Weiterleitungen auf Anwendungsebene zu verarbeiten, müssen Sie:
heroku domains:add example.com
undheroku domains:add www.example.com
) sowohl Ihren Apex- als auch Ihren WWW-Hostnamen hinzu.www
zeigtwww.example.com.herokudns.com.
SECURE_SSL_REDIRECT
zuTrue
)Weitere Informationen finden Sie in diesem Beitrag von DNSimple.
quelle
Ich verwende jetzt Google Apps (für E-Mail) und Heroku als Webserver. Ich verwende die permanente Weiterleitungsfunktion von Google Apps 301, um die nackte Domain auf WWW.Ihre_Domäne.com umzuleiten
Die Schritt-für-Schritt-Anleitung finden Sie hier https://stackoverflow.com/a/20115583/1440255
quelle
Sie dürfen keinen CNAME-Eintrag für die Domäne haben, da der CNAME eine Aliasing-Funktion ist, die alle Datentypen abdeckt (unabhängig davon, ob der Client nach MX-, NS- oder SOA-Einträgen sucht). CNAMEs beziehen sich auch immer auf einen neuen Namen, nicht auf eine IP-Adresse, sodass die einzelne Zeile tatsächlich zwei Fehler enthält
Wenn Sie diesen CNAME in einen A-Datensatz ändern, sollte dies funktionieren, vorausgesetzt, die von Ihnen verwendete IP-Adresse ist die richtige für Ihre Heroku-App.
Die einzig richtige Möglichkeit in DNS, einen einfachen
domain.com
Namen im Browser zum Funktionieren zu bringen, besteht darin, die Domain auf eine IP-Adresse mit einem A-Eintrag zu verweisen.quelle
host app-name.herokuapp.com
Ergebnisse sind dynamisch. Wenn Sie diese fest codieren, wird Ihre App schließlich bremsen. Siehe ANAME / CNAME-Lösungen, die in einem anderen Kommentar empfohlen werden.