Heroku在裸域上的应用程序错误

我遵循一些build议,指向一个Heroku应用程序的域名。 我在说的post可以在这里和这里find。 从命令行我将自定义域添加到我的应用程序

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

然后我将这些configuration添加到我的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用作Alogging已被弃用,并可能导致问题。

不要这样做。 根据DNS规范,CNAMElogging不能与任何其他DNStypes共存,这就是CNAME通常不被允许用于根域的原因。

使用CNAME会阻止任何其他DNSlogging正常工作,例如排除为您的域configurationMXlogging的可能性,从而阻止您接收该域的电子邮件。

您将无法正确发送电子邮件,因为TXT和SPF将被忽略。

在这种情况下解决问题的唯一方法是:

  1. 将根域redirect到www主机名(将根域的Alogging指向redirect服务)
  2. 使用一个DNS提供程序,该提供程序允许为根域configuration类似CNAME的configuration(通过dynamicparsing和分配Alogging到您的根域)
  3. 将Alogging指向由您的Heroku应用程序名称返回的Alogging之一(不build议,因为它们可以更改)。