【问题标题】:Understanding DNS requirements for Google App Engine apps了解 Google App Engine 应用的 DNS 要求
【发布时间】:2017-01-27 08:04:27
【问题描述】:

我有一个正在运行的 Google App Engine,并且我购买了一个域。为了将两者联系起来,我关注了the official guide

具体来说,该指南建议设置这些 DNS 规则:

问题是,我同时拥有裸域 (site.com) 和 www 子域 (www.site.com)。按照指南,我设置了以下规则:

Type      Name               Value
A         site.com.          216.239.32.21
A         site.com.          216.239.34.21
A         site.com.          216.239.36.21
A         site.com.          216.239.38.21
(other AAAA for site.com.)
CNAME     www.site.com.      ghs.googlehosted.com

问题

认为我所做的是正确的,因为它有效:我可以输入 site.com 和 www.site.com 并被定向到我的应用程序。但是我对 www 子域有些困惑。

  1. 什么是 ghs.googlehosted.com ,为什么 www 子域需要 CNAME?为什么 www 没有 A 记录?

  2. 子域如何工作?我没有 A 记录,只有这个 CNAME,但它仍然指向我的 IP。

  3. 我不明白该指南说:

通常您将主机名与规范名称一起列为 地址。在我们的示例中,您要添加的记录之一是主机 使用地址 ghs.googlehosted.com 命名 www。 (如果您使用裸 域,您将使用 @ 作为主机名和相应的值 来自添加新的自定义域表单。)

你能解释一下这一段的意思吗?这是什么@?

【问题讨论】:

  • 想解释一下这个问题有什么问题吗?有多个问题,但如果您知道 ghs.googlehosted.com 是做什么的,您可以立即回答。如果你不这样做,那么你没有。我无法通过我的研究找到此信息,并且从未在 SO AFAIK 上询问过。
  • 除非您的网站由 Google App Engine 或 Google 协作平台 (ghs.googlehosted.com) 托管,否则此设置无法运行。刚刚在我的域名注册商和本地 DNS 服务器上进行了测试。你如何检查它是否指向你的服务器?使用 DNS 查询还是使用 HTTP 等应用层协议?
  • @Dieter 我有一个在 Google App Engine 上运行的应用程序,我正在遵循他们的指南。我知道它的工作原理仅仅是因为我可以通过 HTTP 连接到 site.com 和 www.site.com。
  • 但是您应该知道您的子域指向网关/负载均衡器 (ghs.googlehosted.com) 的 IP 地址,它将 HTTP 请求转发到您的 IP 地址。此转发不是通过 DNS 完成的。
  • @Dieter 是的,但这不是我的问题。我的问题是为什么我被要求为 site.com(指向 216.239.3X.21 的记录)和 www.site.com(指向 DNS 解析的 ghs 的 CNAME)做不同的事情 216.58.194.83)。

标签: google-app-engine dns subdomain cname


【解决方案1】:

我刚刚经历了这个过程,并且对 OP 提供的屏幕截图中显示的要求也感到困惑。到 2020 年,它看起来还是差不多。

这似乎暗示您需要 A、AAAA 和 CNAME(这是没有意义的 - A 和 CNAME 是矛盾的)。我的 DNS 注册商 - cloudflare - 不允许您同时设置这些选项。

为了帮助其他人搜索和查找此页面,我在文档的 this page 上注意到以下行:

记录类型:输入显示在 Google 为您创建的 DNS 记录中的记录类型(A、AAAA 或 CNAME)。

这清楚地表明您可以只设置一套。

【讨论】:

    【解决方案2】:

    指南建议您使用其中一种 DNS 类型,使用 A 和 AAAA(IPv6) 或 CNAME。

    1) 您可以为 www 子域使用 A 和 AAAA 记录。只需将 DNS 设置为

    A         www.site.com.          216.239.38.21
    (other AAAA for site.com.)
    

    2)您的 www 子域工作的原因是因为您指向 www.site.com -> ghs.googlehosted.com。看到有www。在您的 site.com 之前

    CNAME     www.site.com.      ghs.googlehosted.com
    

    3) @ 用于表示当前原点。因此,当您使用 @ 时,它会转换为 site.com。

    为了简单起见,我将使用以下 DNS 条目。这样,裸域和 www 子域都可以访问我的网站。

    CNAME     www.site.com.      ghs.googlehosted.com
    CNAME     @      ghs.googlehosted.com
    

    如果您只想通过裸域服务您的网站。

    CNAME     www.site.com.      site.com
    CNAME     @      ghs.googlehosted.com
    

    这里我们将 www 子域指向裸域。

    【讨论】:

    • 谢谢。我明白你说的话,这很有道理。但是我希望 ghs.googlehosted.com 能够解析到这 4 个 IP 地址。但它指向一个完全不同的地址,请参阅here。我错过了什么吗?
    • 看指南,似乎不是A记录的替代品,而是要插入的附加记录。
    • 检查这个。这解释了 CNAME 和 A 记录之间的区别。 webmasters.stackexchange.com/a/60136
    • 是的,我知道区别,我是说 ghs.googlehosted.com 似乎无法解析这些 IP 地址。因此,如您的回答中所述,添加这四个 A 记录等同于添加指向 ghs.googlehosted.com 的 CNAME 记录。据我所知。
    猜你喜欢
    • 2023-03-03
    • 1970-01-01
    • 2020-05-12
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多