【问题标题】:How to use unverified custom domains with Google App Engine如何在 Google App Engine 中使用未经验证的自定义域
【发布时间】:2016-03-07 10:01:45
【问题描述】:

我需要客户能够将他们自己的自定义域指向我的 GAE 应用程序。

例如customersdomain.com -- CNAME --> myapp.com(又指向 myapp.appspot.com)

我知道我可以将域链接到我的 Google 帐户,然后使用该域为应用引擎提供服务,但此过程无法扩展,并且要求我可以直接访问客户的域注册器/DNS。唯一的其他选择是强制客户注册 Google Apps(为什么!)。

几乎所有其他 PaaS 都让这个过程变得轻松:

  • 在 Heroku 中,我只需将域添加到白名单和客户 添加 CNAME 记录。
  • 在 AWS 中,一个指向实例的 CNAME 记录就可以解决问题。

有人知道解决方法吗?还是我只需要手动将数百个域链接到我的帐户?

【问题讨论】:

    标签: google-app-engine dns google-cloud-platform


    【解决方案1】:

    你要求的是不可能的事情。 App Engine 不使用固定 IP,因此它无法根据 IP 决定它应该为哪个应用程序提供服务。选择由包含 URL 的请求做出,如下所示:

    GET http://custom.example.com/resource.html
    

    服务器提取域部分“custom.example.com”并根据该域决定您的请求所指的应用程序。为此,它必须有一个映射表,其中包含哪些域映射到哪些应用程序。您必须通过在开发人员控制台中输入您的域来填写此映射表。

    当您的域中有 cname 记录时,浏览器首先为您的请求解析 IP。所有应用程序引擎应用程序之间共享相同的 IP 地址,因此单独的 IP 地址无法确定您的应用程序。所以不,您不能只添加 CNAME 并期望 appengine 只知道该做什么,您必须明确告诉 appengine。

    说到显式。您可以对自定义域使用通配符。也许这会有所帮助。否则,我看到客户创建自己的前锋的唯一选择是使用框架。许多域提供商提供的服务将托管一个非常简单的 html 页面,该页面将以全宽/高框架显示目标网站。我总是觉得框架解决方案是某种作弊,但它可能是您的最佳选择。

    【讨论】:

    • 如果我可以在 AWS/Elastic Beanstalk 中实现相同的目标,为什么不可能? (即有自定义域 cname 到实例地址 xyz.elasticbeanstalk.com 而不必告诉亚马逊有关域)
    • 我猜xyz.elasticbeanstalk.com 是一个 AAAAA DNS 记录(简单地说:一个 DNS 名称到 IP 的映射),在这种情况下您的 beanstalk 实例(可能是您的应用程序的负载均衡器)具有专用 IP 地址。因此,您的应用程序以其 IP 闻名。当您为 A 记录创建 CNAME 时,它就像该 A 记录的别名,其行为与上述相同。如果 beanstalk 地址不是 A 记录,请提供一个实时 dns 名称,以便我分析它。
    猜你喜欢
    • 2012-04-15
    • 2017-04-08
    • 2017-05-04
    • 1970-01-01
    • 2015-11-07
    • 2018-07-04
    • 1970-01-01
    • 2012-06-10
    • 2014-10-09
    相关资源
    最近更新 更多