我已经在我的heroku应用程序中添加了一个自定义域,它可以与www.domain.com一起使用。
我需要知道如何设置没有“www”的域来解析应用程序。
以下是我目前的DNS设置:
$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
我必须使用哪些正确设置才能使example.com
和www.example.com
正确指向我的Heroku应用程序?
答案 0 :(得分:138)
(注意:root,base,apex域都是一样的。可以互换使用google-foo。)
传统上,要指向您的顶点域,您将使用指向服务器IP的A记录。此解决方案无法扩展,并且不适用于像Heroku这样的云平台,其中多个且经常变化的后端负责响应请求。
对于子域名(例如www.example.com
),您可以使用指向your-app-name.herokuapp.com
的CNAME记录。从那时起,Heroku管理your-app-name.herokuapp.com
后面的动态A记录,以便它们始终保持最新状态。遗憾的是,DNS规范不允许区域顶点(基本域)上的CNAME记录。 (例如,MX记录会因CNAME首先跟随其目标而中断。)
回到根域,简单而通用的解决方案是根本不使用它们。作为后备措施,一些DNS提供商会为您设置HTTP重定向。在这种情况下,请对其进行设置,以便example.com
是HTTP重定向到www.example.com
。
一些DNS提供商已经提出了自定义解决方案,允许在区域顶点上执行类似CNAME的行为。据我所知,我们有DNSimple's ALIAS record和DNS Made Easy's ANAME record;两者表现相似。
使用这些,您可以将记录设置为(使用区域文件表示法,即使您可能在他们的Web用户界面上执行此操作):
@ IN ALIAS your-app-name.herokuapp.com.
www IN CNAME your-app-name.herokuapp.com.
请记住@
这是根域(example.com
)的简写。还要注意,在区域文件和一些Web用户界面中,尾随点很重要。
亚马逊的Route 53也有一个ALIAS记录类型,但它有点受限,因为它只适用于AWS。目前我不建议将其用于Heroku设置。
有些人会将DNS提供商与域名注册商混淆,因为与提供这两者的公司存在一些重叠。请注意,要将DNS切换到上述提供商之一,您只需要使用当前的域名注册商更新您的域名服务器记录。您无需转移域名注册。
答案 1 :(得分:3)
我现在使用Google Apps(电子邮件)和Heroku作为网络服务器。我正在使用Google Apps 301永久重定向功能将裸域重定向到WWW.your_domain.com
您可以在此处找到分步说明 https://stackoverflow.com/a/20115583/1440255
答案 2 :(得分:2)
您不能拥有域的CNAME记录,因为CNAME是一种覆盖所有数据类型的别名功能(无论客户端是查找MX,NS还是SOA记录)。 CNAME也总是引用新名称,而不是ip地址,因此单行中实际上有两个错误
@ IN CNAME 88.198.38.XXX
如果您使用的IP地址是Heroku应用程序的正确地址,则将该CNAME更改为A记录应该可以正常工作。
DNS在浏览器中使用简单domain.com
名称的唯一正确方法是将域指向带有A记录的IP地址。
答案 3 :(得分:2)
要将您的apex / root / naked域指向Heroku托管的应用程序,您需要使用支持CNAME类记录的DNS提供程序(通常称为ALIAS或ANAME记录)。目前Heroku recommends:
无论您选择哪种,您的记录都将如下所示:
记录: ALIAS
或ANAME
姓名:为空或@
目标: example.com.herokudns.com.
这就是你所需要的一切。
然而,同时拥有www版本和非www版本的not good for SEO。人们应该将另一个指向规范URL。您决定如何做到这一点取决于您是否使用HTTPS。如果你不是,那么你现在应该自动成为Heroku handles SSL certificates for you,并且可以免费使用付费dynos上运行的所有应用程序。
如果您不使用HTTPS,则可以设置301重定向记录,其中大多数DNS提供商将名称www
指向http://example.com
。
如果 使用HTTPS,您很可能需要在应用程序级别处理重定向。如果您想知道原因,请查看这些short和long解释,但基本上是因为您的DNS提供商或其他URL转发服务没有,也不应该有您的SSL证书和私钥,他们无法回复您域名的HTTPS请求。
要在应用程序级别处理重定向,您需要:
heroku domains:add example.com
和heroku domains:add www.example.com
)www
的CNAME记录,指向www.example.com.herokudns.com.
SECURE_SSL_REDIRECT
设置为True
)从DNSimple中查看this post了解更多信息。