Bir Heroku uygulamasına işaret eden apex alan adı (www yok) için DNS'yi nasıl kurarım?


97

Heroku uygulamama zaten özel bir alan ekledim ve çalışıyor www.domain.com.

wwwUygulamayı çözmeden alanı nasıl ayarlayacağımı da bilmem gerekiyor .

İşte mevcut DNS ayarlarım:

$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

Doğru ayarlar hem böylece kullanmak nelerdir example.comve www.example.combenim Heroku uygulamasına doğru işaret olur?


btw, ftp / pop / smtp yapmayan heroku'ya işaret eden www'yi işaret ettiği için ftp / pop / smtp ayarlarınızın hepsi yanlış gibi görünüyor.
2013

Yanıtlar:


145

(Not: root, base, apex alan adlarının hepsi aynı şeydir. Google-foo için birbirinin yerine kullanmak.)

Geleneksel olarak, apeks alanınızı işaret etmek için sunucunuzun IP'sini işaret eden bir A kaydı kullanırsınız. Bu çözüm ölçeklenmez ve isteklere yanıt vermekten birden çok ve sık değişen arka uçların sorumlu olduğu Heroku gibi bir bulut platformu için uygun değildir.

Alt alanlar (gibi www.example.com) için, işaret eden CNAME kayıtlarını kullanabilirsiniz your-app-name.herokuapp.com. Bundan sonra Heroku, your-app-name.herokuapp.comher zaman güncel olmaları için dinamik A kayıtlarını yönetir . Maalesef, DNS spesifikasyonu, bölgenin tepesinde (temel alan) CNAME kayıtlarına izin vermez. (Örneğin, CNAME ilk önce hedefine kadar izleneceği için MX kayıtları bozulur.)

Kök alan adlarına geri dönersek, basit ve genel çözüm, onları hiç kullanmamaktır. Geri dönüş önlemi olarak, bazı DNS sağlayıcıları sizin için bir HTTP yeniden yönlendirmesi kurmayı önerir. Bu durumda, example.combir HTTP yönlendirmesi olacak şekilde ayarlayın www.example.com.

Bazı DNS sağlayıcıları, bölgenin tepesinde CNAME benzeri davranışa izin veren özel çözümlerle öne çıktı. Bildiğim kadarıyla, DNSimple'ın ALIAS kaydı ve DNS Made Easy'nin ANAME kaydı var ; ikisi de benzer şekilde davranır.

Bunları kullanarak, kayıtlarınızı şu şekilde ayarlayabilirsiniz (zonefile gösterimini kullanarak, bunu muhtemelen web kullanıcı arayüzünde yapacaksınız):

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

@Burada kök etki alanı ( example.com) için bir kısaltma olduğunu unutmayın . Ayrıca, sondaki noktaların hem bölge dosyalarında hem de bazı web kullanıcı arayüzlerinde önemli olduğunu unutmayın.

Ayrıca bakınız:

Uyarılar:

  • Amazon Route 53'ün bir ALIAS kayıt türü de vardır, ancak biraz sınırlıdır, çünkü yalnızca AWS'yi işaret etmek için çalışır. Şu anda bunu bir Heroku kurulumu için kullanmanızı tavsiye etmiyorum.

  • Bazı insanlar, her ikisini de sunan şirketlerle biraz örtüştüğü için DNS sağlayıcılarını alan adı kayıt kuruluşlarıyla karıştırır. DNS'nizi yukarıda belirtilen sağlayıcılardan birine geçirmek için yalnızca ad sunucusu kayıtlarınızı mevcut alan adı kayıt kuruluşunuzla güncellemeniz gerektiğini unutmayın. Alan kaydınızı aktarmanıza gerek yoktur.



3
Dnsimple'dan bahsetmek için +1. Bulut sağlayıcılarıyla çalışmayı kolaylaştırma çabaları, onlara geçiş yapma kararımda büyük bir faktördü.
Subfuzion

1
@kch, DNSimple'ın BIND'deki ALIAS'ı gibi davranan bir DNS kayıt türü oluşturabileceğimi biliyor musunuz?
2013

1
Yapabileceğini sanma. Bu özel bir özellik.
kch

2
CloudFlare ayrıca bu özellikleri CNAME düzleştirme dedikleri yöntemle sağlar . Bunu, kökte oluşturduğunuz CNAME kayıtları için otomatik olarak yaparlar, ancak onlarla iletişime geçip bunu sorarsanız, tüm bölgenizde tüm CNAME kayıtları için etkinleştirirler.
Adrian Frühwirth

4

Apeks / kök / çıplak alan adınızı Heroku tarafından barındırılan bir uygulamaya yönlendirmek için, CNAME benzeri kayıtları (genellikle ALIAS veya ANAME kayıtları olarak adlandırılır) destekleyen bir DNS sağlayıcısı kullanmanız gerekir. Şu anda Heroku şunları önermektedir :

Hangisini seçerseniz seçin, kaydınız aşağıdaki gibi görünecektir:

Kayıt: ALIAS veyaANAME

İsim: boş veya@

Hedef: example.com.herokudns.com.

Tek ihtiyacınız olan bu.


Ancak, hem www sürümünün hem de www olmayan sürümün çözülmesi SEO için iyi değildir . Biri diğerini standart URL olarak göstermelidir. Bunu yapmaya nasıl karar vereceğiniz, HTTPS kullanıp kullanmadığınıza bağlıdır. Ve eğer değilseniz, muhtemelen Heroku'nun SSL sertifikalarını sizin için otomatik olarak ve ücretli dinamolar üzerinde çalışan tüm uygulamalar için ücretsiz olarak kullanması gibi olmalısınız .

HTTPS kullanmıyorsanız, sadece ismini işaret Çoğu DNS sağlayıcıları ile bir 301 Yönlendirme rekor ayarlayabilirsiniz wwwiçin http://example.com.

Eğer varsa vardır HTTPS kullanarak, büyük olasılıkla gereksinim duyacağınız uygulama düzeyinde yeniden yönlendirme ele edeceğiz. Nedenini bilmek istiyorsanız, bu kısa ve uzun açıklamaları inceleyin, ancak temelde DNS sağlayıcınız veya diğer URL yönlendirme hizmetiniz SSL sertifikanıza ve özel anahtarınıza sahip olmadığı ve olmaması gerektiği için HTTPS'ye yanıt veremezler. etki alanınız için talepler.

Yönlendirmeleri uygulama düzeyinde işlemek için yapmanız gerekenler:

  • Heroku uygulamasına hem apeks hem de www ana bilgisayar adlarınızı ekleyin ( heroku domains:add example.comve heroku domains:add www.example.com)
  • SSL sertifikalarınızı ayarlayın
  • Yukarıda açıklandığı gibi bir ALIAS veya ANAME kaydı kullanarak apeks alan kaydınızı Heroku'ya yönlendirin
  • Adı wwwişaret eden bir CNAME kaydı ekleyinwww.example.com.herokudns.com.
  • Ve sonra uygulamanızda, 301 www isteklerini www olmayan URL'ye yönlendirin ( Django'da bunun nasıl yapılacağına dair bir örnek burada )
  • Ayrıca uygulamanızda yapmanız gerekir muhtemelen herhangi bir HTTP HTTPS istekleri (örneğin, yönlendirme Django ayarlamak SECURE_SSL_REDIRECTiçin True)

Check out Bu yayını daha DNSimple dan.


3

Şimdi web sunucusu olarak Google Apps (E-posta için) ve Heroku kullanıyorum. Açık alan adını WWW.alan_adiniz.com'a yönlendirmek için Google Apps 301 Kalıcı Yeniden Yönlendirme özelliğini kullanıyorum

Adım adım talimatları burada bulabilirsiniz https://stackoverflow.com/a/20115583/1440255


2

CNAME, tüm veri türlerini kapsayan bir takma özellik olduğundan (istemcinin MX, NS veya SOA kayıtlarını arayıp aramadığına bakılmaksızın), etki alanı için bir CNAME kaydına sahip olmanıza izin verilmez. CNAME'ler ayrıca her zaman bir ip adresine değil, yeni bir ada başvururlar, bu nedenle aslında tek satırda iki hata vardır.

@                        IN CNAME   88.198.38.XXX

Kullandığınız ip adresinin Heroku uygulamanız için doğru olması koşuluyla, CNAME'i bir A kaydıyla değiştirmek, çalışmasını sağlamalıdır.

DNS'de basit bir domain.comadın tarayıcıda çalışmasını sağlamanın tek doğru yolu , etki alanını A kaydı olan bir IP adresine yönlendirmektir.


Tamam ama IP adresimi nasıl bulabilirim? Host appname.herokuapp.com/www.domain.com aracılığıyla sadece şöyle bir IP alıyorum: 107.20.162.205 (Böyle bir Heroku Uygulaması yok)
mrks

1
Bu IP, kullanılacak tek kişidir. Tarayıcıda bir IP adresiyle test edemezsiniz çünkü Heroku'nun kullanmaya çalıştığınız uygulamanın adını bilmesi gerekir. Sadece DNS'de A kaydını kurun ve on ile test edin, Heroku kullandığınız adı görecek ve her şey yolunda olacaktır!
krisku

Tamam ama "host appname.herokuapp.com" dan sonra her seferinde başka bir IP alıyorum.
mrks

2
host app-name.herokuapp.comsonuçlar dinamiktir. Bunları sabit bir şekilde kodlarsanız, uygulamanız sonunda fren yapacaktır. Başka bir yorumda önerilen ANAME / CNAME çözümlerine bakın.
2013

1
Etki alanı.com -> www.domain.com'dan bir HTTP yönlendirmesi gerçekleştirebilen ve etki alanı.com'u bu IP adresine yönlendirebilen, değişmeyen bir IP adresine sahip bir web sunucusuna ihtiyacınız vardır. Ardından, www.domain.com için bir CNAME'in gerçek heroku uygulamasını işaret etmesini sağlayabilirsiniz.
krisku
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.