【问题标题】:DNS: forward root domain to www... when there are other DNS subdomainsDNS:当有其他DNS子域时,将根域转发到www...
【发布时间】:2018-08-11 22:56:57
【问题描述】:

我目前有一个 DNS 设置,其中所有内容和应用程序都托管在同一云服务器 - example.com 上。

演示网站位于 example.com,www 使用 CNAME 转发到 example.com,然后各种内部应用程序(例如 app.example.com)也使用 CNAME 记录转发到 example.com。在我的服务器上运行的 NGINX 从那里获取它,将子域路由到不同的应用程序。

我想在外部服务上托管演示网站,但我对如何更新我的 DNS 配置感到困惑——尤其是如何处理我的 A 记录。

我可以为 www 创建一个 CNAME,它将 www.example.com 转发到我的外部托管服务。但是 example.com 仍然指向我自己的服务器......如果我理解正确,如果我将 example.com 转发到 www.example.com,那么我在 app.example.com 上的所有应用程序都会中断。

我有哪些处理方法?

我的想法(通过四处搜索)是,如果我希望 example.com 指向外部服务,那么我应该

1) 创建一个新域 api-example.com,其 A 记录指向托管我所有应用的服务器

2) 为我在 example.com 上指向 api-example.com 的所有应用子域创建 CNAME 记录

3) 将 example.com 转发到 www.example.com,并将 www.example.com 转发到外部服务。

这个配置会起作用吗?有没有更简单的方法来获得相同的结果?

【问题讨论】:

    标签: dns cname


    【解决方案1】:

    您的计划很好,除了一件事:通常,您的域的根(顶点)不能有CNAME 记录。这意味着您的外部演示网站托管必须提供一个 IP 地址,并且您将创建一个 A 记录,将 example.com 指向该地址。然后你可以有一个CNAME 记录,只需将www.example.com 别名为example.com

    还要确保在这些步骤之间留出足够的时间,以确保所有 DNS TTL 都已过期,这样您就不会遇到 DNS 缓存问题。

    有关域顶点 CNAME 问题的解释(和可能的解决方法),请查看 https://stackoverflow.com/a/33027309/1145196

    【讨论】:

    • OK 所以你宁愿 A 记录指向外部托管服务和 CNAME 指向 example.com,而不是将 example.com 转发到 www.example.com 然后 CNAME www.example.com到外部托管服务?
    • 在这篇文章中,他们提出了相反的观点:netlify.com/blog/2017/02/28/to-www-or-not-www
    • 那篇文章是正确的(但不反对),选择取决于您的托管服务提供商是否会给您 IP 地址或您将指向您的域的一些 DNS 名称。此外,您对“转发”一词的使用不寻常/错误,或者我误解了您想要实现的目标(“转发”通常意味着“使用 3XX 重定向和新位置响应,这也会导致客户端浏览器地址栏中的地址更改)。
    • 如果我想将“beta.example.com”子域指向托管在一个非常长的子域(如 beta.ibm.cloud.xyz.com)上的东西,CNAME 会起作用吗?我想,也许 ALIAS 更适合。
    • CNAME 应该这样做,但请记住,通常在服务器端运行的服务也需要了解/准备接受带有“beta.example.com”主机头的请求
    猜你喜欢
    • 2017-12-13
    • 1970-01-01
    • 2010-10-13
    • 1970-01-01
    • 2018-02-05
    • 2023-04-01
    • 2011-07-04
    • 1970-01-01
    • 2012-09-30
    相关资源
    最近更新 更多