Domain-Name-System
裸域上的 Heroku 應用程序錯誤
我按照一些建議將域指向 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 將被忽略。
在這種情況下解決問題的唯一方法是:
- 將根域重定向到 www 主機名(將根域的 A 記錄指向重定向服務)
- 使用允許對根域進行類似 CNAME 配置的 DNS 提供商(通過動態解析並將 A 記錄分配給您的根域)
- 將 A 記錄指向 Heroku 應用程序名稱返回的 A 記錄之一(不推薦,因為它們可以更改)。