Domain-Name-System

裸域上的 Heroku 應用程序錯誤

  • January 7, 2014

我按照一些建議將域指向 Heroku 應用程序。我正在談論的文章可以在這里這裡找到。從命令行我將自定義域添加到我的應用程序

$ heroku domains:add www.myapp.com
$ heroku domains:add myapp.com

然後我在我的 Gandi Zones 中添加了這些配置

@ 300 IN A 174.129.212.2
@ 300 IN A 75.101.145.87
@ 300 IN A 75.101.163.44
imap 300 IN CNAME access.mail.gandi.net.
pop 300 IN CNAME access.mail.gandi.net.
smtp 300 IN CNAME relay.mail.gandi.net.
webmail 300 IN CNAME agent.mail.gandi.net.
www 300 IN CNAME myapp.herokuapp.com.
@ 300 IN MX 50 fb.mail.gandi.net.
@ 300 IN MX 10 spool.mail.gandi.net.

**在http://www.myapp.com上一切正常,但在裸域http://myapp.com**上,我從 Heroku收到應用程序錯誤。

如何解決這個問題呢?

如果您的 DNS 提供商允許,您應該使用 CNAME 為您的應用程序命名裸域 (’@’)。

@ 300 IN CNAME myname.herokuapp.com.

Cloudflare 允許這樣做,但並非所有 DNS 提供商都這樣做,因為它顯然不符合規範。Heroku 依賴它。不推薦使用 Heroku IP 作為 A 記錄,這可能會導致問題。

**不要那樣做。**根據 DNS 規範,CNAME 記錄不能與任何其他 DNS 類型共存,這就是根域通常不允許 CNAME 的原因。

使用 CNAME 會阻止任何其他 DNS 記錄正常工作,例如為您的域配置 MX 記錄並因此阻止您接收該域的電子郵件的可能性除外。

您也將無法正確發送電子郵件,因為 TXT 和 SPF 將被忽略。

在這種情況下解決問題的唯一方法是:

  1. 將根域重定向到 www 主機名(將根域的 A 記錄指向重定向服務)
  2. 使用允許對根域進行類似 CNAME 配置的 DNS 提供商(通過動態解析並將 A 記錄分配給您的根域)
  3. 將 A 記錄指向 Heroku 應用程序名稱返回的 A 記錄之一(不推薦,因為它們可以更改)。

引用自:https://serverfault.com/questions/559499