为Appengine中的不同服务设置子域

时间:2019-12-10 19:18:04

标签: google-app-engine dns cname wildcard-subdomain

我仔细研究了其他类似的问题并找到了答案。我仍然遇到无法解决的情况,因此无法对这些帖子发表评论以寻求澄清。因此,这个新问题。

让我解释一下我的情况...

  • 我有一个GCP项目,并且在同一项目上启用了AppEngine。
  • 我有3个设置服务:“默认”,“ api”和“ ui”。
  • 我已经在所有3种服务上部署了应用程序,并且都可以通过appspot网址为它们提供服务,而没有任何问题。

现在,我想使用从GoDaddy购买的自己的域来设置路由。该架构如下所示:

  • www.my-domain.com->'默认'
  • rest.app.my-domain.com->'api'
  • ui.app.my-domain.com->'ui'

我有dispatch.yaml来设置路由规则,并且可以在“服务”屏幕中看到正确定义的规则。那里没有问题...问题在于为这些服务定义自定义域映射。

  • 对于“默认”服务,这很容易。 GAE识别了GoDaddy,并要求提供A&AAAA记录以进行安全管理。然后CNAME“ www”指向“ ghs.googlehosted.com”。完成并一切顺利。
  • 现在,对于其他服务,GAE要求提供相同的A,AAAA和CNAME记录集。

这是问题所在。我无法设置多个指向相同值('ghs.googlehosted.com')的CNAME记录。 GoDaddy cPanel / DNS管理器工具甚至不允许添加此类记录。我已向他们表示支持,他们确认他们的工具受ICAAN政策的限制。因此,多个CNAME记录毫无疑问。

作为一种解决方法,我设置了一个指向googledomains的子域。我在m GCP项目的“ Cloud DNS”中将“ app”设置为新区域。所有名称服务器都放置在GoDaddy中的主DNS区域中。从理论上讲,这可能使我能够为googledomains中的“ app”创建CNAME记录。但是GAE项目设置无法识别域。它迫使我在主区域下的GoDaddy中创建CNAME记录。不确定Google如何不理解ICAAN政策!!所以这个选择也走进了墙。

然后,我阅读了有关通配符子域的信息。 GoDaddy文档描述了对此的支持,但仅限于特定IP(因此仅A记录)。但是,GAE需要值为“ ghs.googlehosted.com”,这意味着我只必须创建一个CNAME记录。关于这一点有很多讨论。有人说这行不通,而有人说这行得通。

从字面上看,这是我的最后一个选择,我想知道如何进行这项工作。如果还有其他方法可以使该设置正常运行,则可以节省很多时间和麻烦。我是一名开发人员,所有这些基础工作都对我的生产带宽造成了很大的负担。

提前谢谢您。

2 个答案:

答案 0 :(得分:1)

最后,我解决的方法是在GoDaddy中定义一个通配符CNAME,指向“ ghs.googlehosted.com”,并在googledomains中将所有子域名注册为新域名(实际上使用不同的名称)。后者是另一种故障安全措施,可确保我的客户端可以连接。我现在正在等待当前的订阅用完并从GoDaddy移走。目前,与Google Domains相比,我向GoDaddy支付的价格实在是太高了,对于GoDaddy的支持质量水平,这确实是不合理的。

答案 1 :(得分:0)

所以,我已经为此工作了一段时间,我相信这里有些奇怪。

我尝试了使用go daddy域和2个应用程序引擎服务进行此操作。因此,下面将说明我遵循的步骤:

1)转到App引擎,然后在设置/自定义域上添加您想要的自定义域(在这种情况下为子域)

2)爸爸,您需要转到您的域并管理您域上的DNS记录。

3)添加Cnames向您的子域注册,指向ghs.googlehosted.com

4)部署您的dispatch.yaml

我不明白的是,为什么您说无法执行步骤3,因为当我尝试执行此步骤时它从未引起任何问题。您能指定您在go爸爸中的第三步吗?

此外,我相信在documentation上可以更好地解释这些相同的信息,只是我不知道为什么它会在您这边失败。