映射自定义网域

您可以使用自定义网域,而不是 App Engine 为您的应用提供的默认地址。

如需使用自定义网域,请将网域映射至您的应用,然后更新您的 DNS 记录。您可以映射裸网域(如 example.com)或子网域(如 subdomain.example.com)。您还可以使用通配符映射子网域。

默认情况下,当您将网域映射到应用时,App Engine 会为 HTTPS 连接签发一个代管式 SSL 证书。如需详细了解如何对自定义网域使用 SSL,包括如何使用自己的 SSL 证书,请参阅使用 SSL 保护自定义网域

如果使用自定义网域,App Engine 向某些地区的应用用户发送响应时延迟时间可能明显增加。这些地区如下:

  • us-west2
  • us-east4
  • northamerica-northeast1
  • southamerica-east1
  • europe-west2
  • europe-west3
  • asia-south1
  • asia-northeast1
  • australia-southeast1

App Engine 自定义网域使用所有应用的共享 IP 地址池。如果您希望使用仅映射到您的网域的 IP 地址,则应改为使用 App Engine 设置负载均衡器。这样可以缓解以下网域前端问题:对 SNI 证书中应用 A 的请求可能会路由到 HTTP 主机标头中的应用 B。

准备工作

  • 如果您没有网域,请购买一个。您可以使用任何域名注册商,但如果使用 Google Domains,则网域会自动针对 App Engine 进行验证,因此您无需执行网域验证流程。

  • 如需添加或修改自定义网域映射,您的账号必须具有 App Engine Admin 角色 (roles/appengine.appAdmin) 或包含 appengine.applications.get 权限的自定义角色。

  • 如果您使用 Cloud Load Balancing 和无服务器 NEG 将流量路由到 App Engine 应用,我们建议您将自定义网域映射到负载均衡器,而不是直接映射到您的应用,并使用为负载均衡器创建的 SSL 证书。这样就无需为每个无服务器应用管理单独的 SSL 证书。此外,借助 Cloud Load Balancing,您可以设置 SSL 政策来控制负载均衡器与客户端协商的 SSL 的功能。如需了解详情,请参阅以下页面:

    请注意以下限制:

    • 我们建议您使用入站流量控制,以使应用仅接收从负载均衡器和 VPC(如果使用 VPC)发送的请求。否则,用户可以使用应用的 App Engine 网址来绕过负载均衡器、Google Cloud Armor 安全政策、SSL 证书和通过负载均衡器传递的私钥。

将自定义网域映射到您的应用

  1. 在 Google Cloud Console 中,转到 App Engine 设置页面的应用设置标签页。

    打开“应用设置”页面

    如果您不需要修改默认的 Google Accounts API 引荐来源网址,请继续执行下一步。

    如果您需要为自定义网域启用 Google Workspace 身份验证,请点击修改以修改 Google Accounts API 引荐来源网址。在 Google 身份验证下拉菜单中,选择 Google Workspace 网域,然后在空字段中添加您的网域,例如 example.com

  2. 在 Google Cloud Console 中,转到 App Engine 设置页面的自定义网域标签页。

    转到“自定义网域”页面

  3. 点击添加自定义网域

  4. 如果您的网域已经过验证,则该网域会显示在选择要使用的网域部分。从下拉菜单中选择网域,然后点击继续

    如果您尚未验证网域,请执行以下操作:

    1. 从下拉菜单中选择验证新网域
    2. 输入您的裸域名(例如“example.com”),然后点击验证

      即使您只想映射一个子网域(如“www.subdomain.example.com”),也要输入裸域名来验证所有权。

      请注意,域名长度必须少于 64 个字节。

    3. 在显示的 Search Console 窗口中输入信息。如需有关使用 Search Console 的帮助,请参阅 Search Console 帮助

    4. 完成 Search Console 中的步骤后,返回到 Google Cloud 控制台中的添加新的自定义网域页面。

  5. 在“将您的网域指向 [project-ID]”部分中,指定您要映射的网域和子网域。

    我们建议您映射裸网域和 www 子网域。您可以根据需要添加更多子网域。

    添加完所需的所有映射后,点击保存映射

  6. 点击继续,查看您网域的 DNS 记录。

    您随时可以在 App Engine 设置页面的自定义网域标签页中检索这些记录。

  7. 登录您的网域注册商网站,并使用上一步中显示的记录更新 DNS 记录

在您的网域注册商处更新 DNS 记录

在 App Engine 中,将服务映射到自定义网域后,您需要在网域注册商处更新 DNS 记录。为方便起见,App Engine 会生成并显示您需要输入的 DNS 记录。

  1. 检索网域映射的 DNS 记录信息:

    在 Google Cloud 控制台中,转到 App Engine 设置页面的自定义网域标签页。该页面列出了您已映射到应用的所有网域的 DNS 记录。

  2. 在网域注册商网站登录您的账号,然后打开 DNS 配置页面。

  3. 找到您的网域配置页面的主机记录部分,然后将您在将网域映射到应用时检索的每条 DNS 记录添加到您的应用中。

    在记录字段中输入以下信息:

    • 记录类型:输入 Google 为您创建的 DNS 记录中显示的记录类型(AAAAACNAME)。
    • 记录名称:
      • AAAAA 记录中,输入 @
      • CNAME 记录中,输入第三级域名。例如,输入 www 以映射 www.example.com 子网域。
    • TTL:根据需要指定 TTL。
    • 数据:输入 Google 为您创建的 DNS 记录中显示的记录数据 (rrdata)。
      • AAAAA 记录中,记录数据是 IP 地址
      • CNAME 记录中,记录数据是一个域名
  4. 保存您在网域账号的 DNS 配置页面中所做的更改。在大多数情况下,这些更改只需几分钟即可生效,但在某些情况下,可能需要几个小时,具体取决于注册商以及网域的任何先前 DNS 记录的存留时间 (TTL)。您可以使用 dig 工具(如此在线 dig 版本)确认 DNS 记录已成功更新。

  5. 通过浏览您的新服务网址(例如 https://www.example.com)来测试是否成功。请注意,发放自动 SSL 证书可能需要几分钟的时间。

将所有权委托给其他 Google Cloud 用户或服务账号

如果您需要将网域的所有权委托给其他用户或服务账号,则可以通过 Search Console 页面添加权限:

  1. 打开 Search Console 验证页面

  2. 属性下,点击要为其添加用户或服务账号的网域。

  3. 已通过验证的所有者列表的末尾,点击添加所有者,然后输入 Google 账号电子邮件地址或服务账号 ID。

    如需查看您的服务账号列表,请打开 Google Cloud 控制台中的“服务账号”页面:

    转到“服务账号”页面

使用子网域

如果您为自定义网域设置了通配符子网域映射,则应用会为任何匹配的子网域处理请求。

  • 如果用户浏览与应用版本名称或服务名称匹配的网域,则应用会传送该版本。
  • 如果用户浏览与服务名称匹配的网域,则应用会传送该服务。
  • 每个基本网域每周最多可以有 20 个托管式 SSL 证书。 如果您遇到了此限制,则 App Engine 会一直尝试颁发托管式证书,直到满足所有请求为止。

通配符映射

您可以使用通配符来映射任何级别的子网域(从第三级子网域开始)。例如,如果您的网域是 example.com,并且在网址字段中输入文本:

  • 如果输入 *.example.com,则会将 example.com 的所有子网域映射到您的应用。
  • 如果输入 *.private.example.com,则会将 private.example.com 的所有子网域映射到您的应用。
  • 如果输入 *.nichol.sharks.nhl.example.com,则会将 nichol.sharks.nhl.example.com 的所有子网域映射到您的应用。
  • 如果输入 *.excogitate.system.example.com,则会将 excogitate.system.example.com 的所有子网域映射到您的应用。

您可以在 App Engine 的服务中使用通配符映射,方法是使用 dispatch.yaml 文件将请求定义为路由至特定服务。

如果您将 Google Workspace 与您网域中的其他子网域(例如 sitesmail)搭配使用,那么这些映射的优先级较高。系统会先匹配这些映射,然后再进行任何通配符映射。此外,如果您将其他 App Engine 应用映射到其他子网域,则这些映射的优先级也将高于任何通配符映射。

某些 DNS 提供商可能无法使用通配符子网域映射。特别是,DNS 提供商必须允许在 CNAME 主机条目中使用通配符。

通配符路由规则适用于包含服务、版本和实例组件的网址,并且遵循 App Engine 的服务路由规则

从应用中删除自定义网域

如需从应用中删除自定义网域映射,您的账号必须具有 App Engine Admin 角色 (roles/appengine.appAdmin) 或包含appengine.applications.update 权限的自定义角色。

在 Google Cloud 控制台中,执行以下操作:

  1. 转到 App Engine 设置页面的自定义网域标签页。

    转到“自定义网域”页面

  2. 选择自定义域名,然后点击删除

或者,您可以使用 gcloud 命令Admin API 删除自定义网域。

问题排查

如果在使用 G Suite 网域身份验证配置自定义网域后,您的应用显示身份验证错误,请移除自定义网域映射并重新执行将自定义网域映射到您的应用步骤。请确保在 App Engine 中配置自定义网域映射之前配置 G Suite 网域身份验证。

后续步骤

使用 SSL 保护自定义网域