
我遵循一些建議將網域指向 Heroku 應用程式。我說的帖子都可以找到這裡和這裡。從命令列我將自訂網域新增到我的應用程式中
$ heroku domains:add www.myapp.com
$ heroku domains:add myapp.com
然後我將這些配置添加到我的 Gandi 區域中
@ 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我得到一個應用程式錯誤來自赫羅庫。
如何解決這個問題呢?
答案1
如果您的 DNS 提供者允許,您應該使用應用程式的 CNAME 為裸域 ('@') 建立別名。
@ 300 IN CNAME myname.herokuapp.com.
Cloudflare 允許這樣做,但並非所有 DNS 提供者都這樣做,因為它顯然不符合規範。 Heroku 依賴它。使用 Heroku IP 作為 A 記錄已被棄用,並可能導致問題。
答案2
不要那樣做。根據 DNS 規範,CNAME 記錄不能與任何其他 DNS 類型共存,這就是為什麼根網域通常不允許使用 CNAME 的原因。
使用 CNAME 會阻止任何其他 DNS 記錄正常運作,例如排除為您的網域設定 MX 記錄的可能性,從而阻止您接收該網域的電子郵件。
您也將無法正確傳送電子郵件,因為 TXT 和 SPF 將被忽略。
在這種情況下解決問題的唯一方法是:
- 將根網域重新導向至www主機名稱(將根網域的A記錄指向重新導向服務)
- 使用允許對根網域進行類似 CNAME 的配置的 DNS 提供者(透過動態解析 A 記錄並將其指派給您的根網域)
- 將 A 記錄指向您的 Heroku 應用程式名稱傳回的 A 記錄之一(不建議,因為它們可能會更改)。