这是我在其他地方看到讨论过的问题,但是这个问题并没有被明确说明是不可能的。
我想将 apex 域指向 heroku 应用程序(example.com
至example.herokuapp.com
)
CNAME 似乎是不可能的,因为它们不允许在顶层(子域名可以)。
ALIAS 记录似乎是一种选择,尽管我不完全了解它们,或者它们是否是标准的。我们使用 AWS Route53 作为我们的 DNS 提供商,但 ALIAS 记录似乎只能用于特定的 Amazon 服务(s3 网站、负载均衡器等)。
那么,是否可以将顶点域指向 Heroku 应用程序?我唯一的选择是使用其他 DNS 提供商吗?
谢谢
编辑:我知道我可以将 CNAMEwww.example.com
改为example.herokuapp.com
,然后使用 ALIAS 记录和重定向的 S3 站点从 重定向example.com
到www.example.com
。但我们想要的恰恰相反,我们希望浏览器显示example.com
。
答案1
别名记录不是实际的 DNS 记录类型 - 它们是指向 Route 53 内其他记录的指针,因此别名记录的目标只能是 S3 存储桶、弹性负载均衡器、CloudFront 分发或A
托管区域内其他相同类型的记录(例如记录)。Route 53 使用其内部数据库来查找目标并返回标准 DNS 响应。
因此,不可能直接将别名指向外部目的地。
如果您确实想将别名指向外部目标,则可以使用 CloudFront 间接实现,因为 CloudFront 接受主机名 (example.herokuapp.com) 作为将转发请求的源服务器的名称。它还允许您使用由 Amazon 证书管理器生成的 SSL 证书,并有选择地将不同的路径模式路由到不同的目标(例如,路由/images/*
到 S3 存储桶)。如果您不想要,可以自定义或禁用 CloudFront 的缓存行为。
当然,这会产生请求和带宽的使用费,但会提供一些可能值得的额外功能,包括减轻您的 heroku 服务的负载(如果您可以从缓存中受益)。
但是,使用 www 主机名而不是裸域是有充分理由的,并且配置裸域以将传入请求重定向到 www,这可以通过多种不同方式完成。