Dodałem już niestandardową domenę do mojej aplikacji Heroku i działa z www.domain.com
.
Muszę też wiedzieć, jak skonfigurować domenę bez www
rozwiązywania problemów z aplikacją.
Oto moje aktualne ustawienia DNS:
$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
Jakich ustawień należy użyć, aby oba example.com
i www.example.com
wskazywały poprawnie moją aplikację Heroku?
Odpowiedzi:
(Uwaga: domeny root, base, apex to to samo. Używaj zamiennie dla google-foo.)
Tradycyjnie, aby wskazać domenę wierzchołkową, należy użyć rekordu A wskazującego adres IP serwera. To rozwiązanie nie jest skalowalne i nie jest opłacalne dla platformy chmurowej, takiej jak Heroku, gdzie wiele i często zmieniających się backendów jest odpowiedzialnych za odpowiadanie na żądania.
W przypadku subdomen (takich jak
www.example.com
) możesz użyć rekordów CNAME wskazujących nayour-app-name.herokuapp.com
. Od tego momentu Heroku zarządza dynamicznymi rekordami Ayour-app-name.herokuapp.com
, aby były zawsze aktualne. Niestety specyfikacja DNS nie zezwala na rekordy CNAME w wierzchołku strefy (domenie podstawowej). (Na przykład rekordy MX uległyby uszkodzeniu, ponieważ CNAME byłby najpierw śledzony do celu).Wracając do domen głównych, prostym i ogólnym rozwiązaniem jest w ogóle ich nie używać. W ramach środka zastępczego niektórzy dostawcy DNS oferują skonfigurowanie przekierowania HTTP za Ciebie. W takim przypadku skonfiguruj go tak, aby
example.com
było przekierowaniem HTTP dowww.example.com
.Niektórzy dostawcy DNS zaproponowali niestandardowe rozwiązania, które umożliwiają zachowanie podobne do CNAME na wierzchołku strefy. Według mojej wiedzy, mamy rekord ALIAS DNSimple za i rekord ÁNazwy DNS Made Easy jest ; oba zachowują się podobnie.
Korzystając z nich, możesz skonfigurować swoje rekordy jako (używając notacji pliku strefy, nawet jeśli prawdopodobnie zrobisz to w ich internetowym interfejsie użytkownika):
Pamiętaj, że
@
tutaj jest skrót nazwy domeny głównej (example.com
). Pamiętaj również, że kropki na końcu są ważne, zarówno w plikach stref, jak i niektórych interfejsach użytkownika.Zobacz też:
Uwagi:
Amazon's Route 53 również ma typ rekordu ALIAS, ale jest nieco ograniczony, ponieważ działa tylko w celu wskazywania w AWS. W tej chwili nie polecałbym używania tego w konfiguracji Heroku.
Niektórzy mylą dostawców DNS z rejestratorami nazw domen, ponieważ w pewnym stopniu pokrywają się one z firmami oferującymi jedno i drugie. Pamiętaj, że aby przełączyć DNS na jednego z wyżej wymienionych dostawców, wystarczy zaktualizować rekordy serwera nazw u obecnego rejestratora domen. Nie musisz przenosić rejestracji domeny.
źródło
Aby skierować domenę wierzchołkową / główną / samą domenę na aplikację hostowaną w Heroku, musisz użyć dostawcy DNS, który obsługuje rekordy podobne do CNAME (często określane jako rekordy ALIAS lub ANAME). Obecnie Heroku poleca :
Niezależnie od tego, które wybierzesz, Twój rekord będzie wyglądał następująco:
Rekord:
ALIAS
lubANAME
Nazwa: puste lub
@
Cel:
example.com.herokudns.com.
To wszystko, czego potrzebujesz.
Jednak nie jest dobre dla SEO, aby rozwiązywać zarówno wersję www, jak i wersję inną niż www. Jeden powinien wskazywać na drugi jako kanoniczny adres URL. To, w jaki sposób zdecydujesz się to zrobić, zależy od tego, czy używasz protokołu HTTPS, czy nie. A jeśli nie, prawdopodobnie powinieneś być taki, jak Heroku obsługuje teraz certyfikaty SSL automatycznie i bezpłatnie dla wszystkich aplikacji działających na płatnych hamowniach.
Jeśli nie używasz HTTPS, można po prostu założyć rekord przekierowanie 301 z większością dostawców DNS wskazujące nazwę
www
nahttp://example.com
.Jeśli są za pomocą protokołu HTTPS, będziesz najprawdopodobniej potrzeba obsłużyć przekierowanie na poziomie aplikacji. Jeśli chcesz wiedzieć, dlaczego, zapoznaj się z tymi krótkimi i długimi wyjaśnieniami, ale w zasadzie, ponieważ Twój dostawca DNS lub inna usługa przekazywania adresów URL nie ma i nie powinna mieć Twojego certyfikatu SSL i klucza prywatnego, nie mogą odpowiadać na HTTPS żądania dotyczące Twojej domeny.
Aby obsłużyć przekierowania na poziomie aplikacji, musisz:
heroku domains:add example.com
iheroku domains:add www.example.com
)www
wskazującą nawww.example.com.herokudns.com.
SECURE_SSL_REDIRECT
naTrue
)Więcej informacji znajdziesz w tym poście od DNSimple.
źródło
Obecnie używam Google Apps (dla poczty e-mail) i Heroku jako serwera internetowego. Używam funkcji stałego przekierowania Google Apps 301, aby przekierować samą domenę na WWW.twoja_domena.com
Szczegółowe instrukcje znajdziesz tutaj: https://stackoverflow.com/a/20115583/1440255
źródło
Nie możesz mieć rekordu CNAME dla domeny, ponieważ CNAME to funkcja aliasingu obejmująca wszystkie typy danych (niezależnie od tego, czy klient szuka rekordów MX, NS czy SOA). CNAME również zawsze odnoszą się do nowej nazwy, a nie do adresu IP, więc w rzeczywistości są dwa błędy w jednym wierszu
Zmiana tego CNAME na rekord A powinna sprawić, że to zadziała, pod warunkiem, że używany adres IP jest prawidłowy dla aplikacji Heroku.
Jedynym poprawnym sposobem w DNS, aby prosta
domain.com
nazwa działała w przeglądarce, jest wskazanie domeny na adres IP z rekordem A.źródło
host app-name.herokuapp.com
wyniki są dynamiczne. Jeśli zakodujesz je na stałe, Twoja aplikacja w końcu ulegnie awarii. Zobacz rozwiązania ANAME / CNAME zalecane w innym komentarzu.