Jak skonfigurować DNS dla domeny apex (bez www) wskazującej na aplikację Heroku?

Dodałem już niestandardową domenę do mojej aplikacji heroku i działa ona z www.domain.com.

Muszę wiedzieć, jak skonfigurować domenę bez "www", aby rozwiązać 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

Jakie są prawidłowe ustawienia, których muszę użyć, aby zarówno example.com, jak i www.example.com wskazywały poprawnie moją aplikację Heroku?

 86
Author: kch, 2013-04-15

4 answers

(Uwaga: domeny root, base, apex to wszystko to samo. Używanie zamiennie dla google-foo.)

Tradycyjnie, aby wskazać domenę apex, używasz rekordu A wskazującego adres IP serwera. To rozwiązanie nie skaluje się 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.

Dla subdomen (np. www.example.com) Można używać rekordów CNAME wskazujących na your-app-name.herokuapp.com. Od tego momentu Heroku zarządza dynamiczne rekordy a za your-app-name.herokuapp.com, aby były zawsze aktualne. Niestety, Specyfikacja DNS nie zezwala na rekordy CNAME w strefie apex (domenie bazowej). (Na przykład, rekordy MX będą łamane, ponieważ CNAME będzie podążane do celu jako pierwsze.)

Wracając do domen głównych, prostym i ogólnym rozwiązaniem jest nieużywanie ich w ogóle. Jako środek awaryjny niektórzy dostawcy DNS oferują skonfigurowanie przekierowania HTTP. W takim przypadku skonfiguruj go tak, aby example.com było przekierowaniem HTTP do www.example.com.

Niektórzy dostawcy DNS przedstawili niestandardowe rozwiązania, które pozwalają na zachowanie podobne do CNAME na szczycie strefy. Według mojej wiedzy, mamy rekord ALIAS DNSimple i rekord nazw DNS Made Easy ; oba zachowują się podobnie.

Używając ich, możesz skonfigurować swoje rekordy jako (używając notacji plików strefowych, nawet jeśli prawdopodobnie zrobisz to w ich interfejsie WWW):

@   IN ALIAS your-app-name.herokuapp.com.
www IN CNAME your-app-name.herokuapp.com.

Pamiętaj @ Oto Skrót domeny głównej (example.com). Również uważaj że kropki końcowe są ważne, zarówno w plikach strefowych, jak i niektórych interfejsach użytkownika sieci web.

Zobacz też:

Uwagi:

  • Amazon Route 53 ma również typ rekordu ALIAS, ale jest nieco ograniczony, ponieważ działa tylko do wskazywania w AWS. W tej chwili nie polecam używania tego do Heroku / align = "left" /

  • Niektórzy mylą dostawców DNS z rejestratorami nazw domen, ponieważ firmy oferujące oba produkty nakładają się trochę na siebie. Pamiętaj, że aby przełączyć DNS na jednego z wyżej wymienionych dostawców, wystarczy zaktualizować rekordy serwera nazw z aktualnym rejestratorem domeny. Nie musisz przenosić rejestracji domeny.

 135
Author: kch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-27 02:01:43

Używam teraz Google Apps (do poczty e-mail) i Heroku jako serwera www. Używam funkcji stałego przekierowania Google Apps 301, aby przekierować nagą domenę do WWW.your_domain.com

Instrukcje krok po kroku znajdziesz tutaj https://stackoverflow.com/a/20115583/1440255

 3
Author: Leo Tulipan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:18

Aby skierować domenę apex / root / naked na aplikację hostowaną przez Heroku, musisz użyć dostawcy DNS, który obsługuje rekordy podobne do CNAME (często określane jako alias lub rekordy ANAME). Aktualnie Heroku poleca :

Którekolwiek z tych wybierz, Twój rekord będzie wyglądał następująco:

Rekord: ALIAS LUB ANAME

Nazwa: pusty lub @

Cel: example.com.herokudns.com.

To wszystko, czego potrzebujesz.

Jednak to nie jest dobre dla SEO , aby mieć zarówno wersję www, jak i wersję Nie-www. Jeden powinien wskazywać na drugi jako kanoniczny adres URL. To, jak zdecydujesz się to zrobić, zależy od tego, czy używasz HTTPS, czy nie. A jeśli nie, prawdopodobnie powinieneś być jak Heroku teraz obsługuje certyfikaty SSL dla ciebie automatycznie i za darmo dla wszystkich aplikacji działających na płatnych dynos.

Jeśli nie używasz HTTPS, możesz po prostu skonfigurować rekord przekierowania 301, z którym większość dostawców DNS wskazuje nazwę www na http://example.com.

Jeśli używasz HTTPS, najprawdopodobniej będziesz musiał obsłużyć przekierowanie na poziomie aplikacji. Jeśli chcesz wiedzieć dlaczego, sprawdź te krótkie i długie wyjaśnienia, ale w zasadzie ponieważ twój dostawca DNS lub inna usługa przekierowywania adresów URL nie ma i nie powinien mieć certyfikatu SSL i klucza prywatnego, nie może odpowiadać na żądania HTTPS dotyczące twojej domeny.

Aby obsłużyć przekierowania na poziomie aplikacji, musisz:

    Dodaj zarówno nazwy hostów apex, jak i www do aplikacji Heroku (heroku domains:add example.com i heroku domains:add www.example.com)
  • Konfigurowanie certyfikatów SSL
  • skieruj rekord domeny apex na Heroku używając aliasu lub rekordu nazwy jak opisano powyżej
  • Dodaj rekord CNAME z nazwą www wskazującą na www.example.com.herokudns.com.
  • a następnie w Twojej aplikacji, 301 przekierowuje wszelkie żądania www na adres URL nie-www (oto przykład Jak to zrobić w Django)
  • również w Twojej aplikacji powinieneś przekierować wszelkie żądania HTTP na HTTPS (na przykład w Django Ustaw SECURE_SSL_REDIRECT na True)
Więcej informacji na ten temat można znaleźć na stronie DNSimple.
 2
Author: Jeff Bowen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-15 08:10:03

Nie możesz mieć rekordu CNAME dla domeny, ponieważ CNAME jest funkcją aliasingu, która obejmuje wszystkie typy danych (niezależnie od tego, czy klient szuka rekordów MX, NS lub SOA). CNAMEs zawsze odnosi się do nowej nazwy, a nie adresu ip, więc w jednej linii występują dwa błędy ]}

@                        IN CNAME   88.198.38.XXX

Zmiana CNAME na rekord A powinna sprawić, że będzie działać, pod warunkiem, że adres ip, którego używasz, jest prawidłowy dla Twojej aplikacji Heroku.

Jedyny poprawny sposób w DNS, aby prosta nazwa domain.com działa w przeglądarce, jest skierowanie domeny do adresu IP z rekordem A.

 1
Author: krisku,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-16 08:45:50