我已经在我的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
Run Code Online (Sandbox Code Playgroud)
什么是正确的设置,我不得不使用这样既www.domain.com
和www
将正确地指向我的Heroku应用程序?
kch*_*kch 138
(注意:root,base,apex域都是一样的.可以互换使用google-foo.)
传统上,要指向您的顶点域,您将使用指向服务器IP的A记录.此解决方案无法扩展,并且不适用于像Heroku这样的云平台,其中多个且经常变化的后端负责响应请求.
对于子域(如www.example.com
),您可以使用指向的CNAME记录your-app-name.herokuapp.com
.从那时起,Heroku管理着背后的动态A记录,your-app-name.herokuapp.com
以便它们始终保持最新状态.遗憾的是,DNS规范不允许区域顶点(基本域)上的CNAME记录.(例如,MX记录会因CNAME首先跟随其目标而中断.)
回到根域,简单而通用的解决方案是根本不使用它们.作为后备措施,一些DNS提供商会为您设置HTTP重定向.在这种情况下,请将其设置example.com
为HTTP重定向到www.example.com
.
一些DNS提供商已经提出了自定义解决方案,允许区域顶点上的类似CNAME的行为.据我所知,我们有DNSimple的ALIAS记录和DNS Made Easy的ANAME记录 ; 两者表现相似.
使用这些,您可以将记录设置为(使用区域文件表示法,即使您可能在他们的Web用户界面上执行此操作):
@ IN ALIAS your-app-name.herokuapp.com.
www IN CNAME your-app-name.herokuapp.com.
Run Code Online (Sandbox Code Playgroud)
请记住,@
这是根域(example.com
)的简写.还要注意,在区域文件和一些Web用户界面中,尾随点很重要.
亚马逊的Route 53也有一个ALIAS记录类型,但它有点受限,因为它只适用于AWS.目前我不建议将其用于Heroku设置.
有些人将DNS提供商与域名注册商混淆,因为与提供这两者的公司有一些重叠.请注意,要将DNS切换到上述提供商之一,您只需要使用当前的域名注册商更新您的域名服务器记录.您无需转移域名注册.
要将您的 apex/root/naked 域指向 Heroku 托管的应用程序,您需要使用支持类似 CNAME 记录(通常称为 ALIAS 或 ANAME 记录)的 DNS 提供商。目前 Heroku推荐:
无论您选择哪一个,您的记录都将如下所示:
记录: ALIAS
或ANAME
名称:空或@
目标: example.com.herokudns.com.
这就是你所需要的。
但是同时解析www版本和非www版本对SEO来说并不好。一个应该指向另一个作为规范 URL。您决定如何执行此操作取决于您是否使用 HTTPS。如果您不是,您可能应该这样做,因为 Heroku 现在会自动为您处理 SSL 证书,并且对于在付费测功机上运行的所有应用程序免费。
如果您不使用 HTTPS,则只需设置 301 重定向记录,大多数 DNS 提供商将 namewww
指向http://example.com
.
如果您使用HTTPS,您很可能需要在应用程序级别处理重定向。如果您想知道原因,请查看这些简短和详细的解释,但基本上由于您的 DNS 提供商或其他 URL 转发服务没有也不应该拥有您的 SSL 证书和私钥,因此它们无法响应 HTTPS对您的域的请求。
要在应用程序级别处理重定向,您需要:
heroku domains:add example.com
和heroku domains:add www.example.com
)www
指向www.example.com.herokudns.com.
SECURE_SSL_REDIRECT
为True
)查看DNSimple 的这篇文章了解更多信息。
归档时间: |
|
查看次数: |
100109 次 |
最近记录: |