View a markdown version of this page

路由子域的流量 - Amazon Route 53
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

路由子域的流量

当您希望将子域(如 acme.example.com 或 zenith.example.com)的流量路由至您的资源时,您有两个选项:

在域的托管区域中创建记录

通常情况下,要路由子域的流量,应在托管区域中创建一条与域同名的记录。例如,要将 acme.example.com 的 Internet 流量路由到数据中心的 Web 服务器,应在 example.com 托管区域中创建一条名为 acme.example.com 的记录。有关更多信息,请参阅主题使用记录及其子主题。

为子域创建一个托管区域,并在新的托管区域中创建记录

您还可以为子域创建托管区域。使用单独的托管区域路由子域的互联网流量有时被称为 “将子域的责任委托给托管区域” 或 “将子域名委托给其他域名服务器”。下面概览了使用方式:

  1. 您可以创建一个托管区域,其名称与要路由流量的子域相同,例如 acme.example.com。

  2. 在新的托管区域中创建记录,以定义您要如何路由子域 (acme.example.com) 及其子域(如 backend.acme.example.com)的流量。

  3. 您可以获取在创建新托管区域时 Route 53 分配给新托管区域的名称服务器。

  4. 您在托管区域中为域创建新的 NS 记录(example.com)。NS 记录名称必须是子域名 (acme.example.com),并且您指定在步骤 3 中获得的四个域名服务器作为记录值。

使用单独的托管区域为子域路由流量时,您可以使用 IAM 权限来限制对子域的托管区域的访问权限。如果您有多个子域名由不同的群组管理,则为每个子域名创建一个托管区域可以减少需要访问该域名托管区域中记录的人数。

要实现此委托流程,您需要以下 IAM 权限。有关 Route 53 IAM 策略的更多信息,请参阅Amazon Route 53 中的 Identity and Access Management

家长账户(拥有 example.com)

用户或角色需要权限才能修改父域托管区域中的记录:

子账号(创建 acme.example.com)

用户或角色需要权限才能创建和管理子域托管区域:

为子域使用单独的托管区域还允许您为域和子域使用不同的 DNS 服务。有关更多信息,请参阅 使用 Amazon Route 53 作为子域的 DNS 服务,但不迁移父域

对于每个 DNS 解析程序中第一个 DNS 查询,这种配置对性能会有小的影响。解析器必须从根域的托管区域获取信息,然后从托管区域获取子域的信息。在子域的第一个 DNS 查询后,解析程序会缓存信息,且不需要再次获取此信息,直到 TTL 到期和其他客户端从该解析程序请求该子域为止。有关更多信息,请参阅在您创建或编辑 Amazon Route 53 记录时指定的值部分中的 TTL(秒)

创建另一个托管区域来路由子域的流量

一种路由子域流量的方法是为子域创建一个托管区域,然后在新的托管区域中为子域创建记录。(更常用的选项是在域的托管区域中为子域创建记录。)

注意

此过程说明如何将子域委托给 Route 53。您还可以通过创建指向其他 DNS 服务名称服务器的 NS 记录,将子域委托给这些服务。

过程概览:

  1. 为子域创建托管区域。有关更多信息,请参阅 为子域创建新的托管区域

  2. 将记录添加到子域的托管区域。如果域的托管区域包含属于子域的托管区域中的任何记录,则在托管区域中为子域复制这些记录。有关更多信息,请参阅 在子域的托管区域中创建记录

  3. 在域的托管区域中为子域创建 NS 记录,这会将子域的责任委托给新托管区域中的名称服务器。如果域的托管区域包含属于子域的托管区域中的任何记录,则从域的托管区域中删除记录。(第 2 步中您在托管区域中为子域创建的副本。) 有关更多信息,请参阅 更新域的托管区域

为子域创建新的托管区域

要使用 Route 53 控制台为子域创建托管区域,请执行以下步骤。

为子域创建托管区域 (控制台)
  1. 登录 Amazon Web Services 管理控制台 并打开 Route 53 控制台,网址为https://console.aws.amazon.com/route53/

  2. 如果您不熟悉 Route 53,请选择入门

    如果您已经在使用 Route 53,请在导航窗格中选择 Hosted zones(托管区域)。

  3. 选择 Create Hosted Zone(创建托管区域)。

  4. 在右侧窗格中,输入子域的名称,如 acme.example.com。您也可以根据需要输入注释。

    有关如何指定除 a-z、0-9 和 - (连字符) 以外的字符以及如何指定国际化域名的信息,请参阅DNS 域名格式

  5. 对于 Type(类型),接受 Public hosted zone(公有托管区域)的默认值。

  6. 在右窗格的底部,选择 Create hosted zone(创建托管区域)。

在子域的托管区域中创建记录

要定义您希望 Route 53 如何路由子域(acme.example.com)及其子域名(backend.acme.example.com)的流量,请在托管区域中为子域创建记录。

对于在托管区域中为子域创建记录,请注意以下事项:

  • 请勿在子域的托管区域中创建其他名称服务器 (NS) 或授权起始点 (SOA) 记录,且请勿删除现有的 NS 和 SOA 记录。

  • 在子域的托管区域中创建子域的所有记录。例如,如果您有 example.com 和 acme.example.com 域的托管区域,请在 acme.example.com 托管区域中创建 acme.example.com 子域的所有记录。这包括 backend.acme.example.com 和 beta.backend.acme.example.com 等记录。

  • 如果域 (example.com) 的托管区域已包含属于子域 (acme.example.com) 的托管区域中的任何记录,则在托管区域中为子域复制这些记录。在流程的最后一步中,您稍后删除域的托管区域中的重复记录。

    重要

    如果您有一些子域的记录同时处于域的托管区域以及子域的托管区域中,则 DNS 行为将不一致。行为取决于 DNS 解析器缓存了哪些域名服务器:域名托管区域 (example.com) 的名称服务器或子域托管区域 (acme.example.com) 的名称服务器。在某些情况下,当记录存在时,Route 53 将返回 NXDOMAIN(不存在的域),但不在 DNS 解析器查询的托管区域中。

有关更多信息,请参阅 使用记录

更新域的托管区域

当您创建托管区域时,Route 53 会自动为该区域分配四个名称服务器。托管区域的 NS 记录标识响应域或子域的 DNS 查询的名称服务器。要开始使用子域的托管区域中的记录来路由互联网流量,请在托管区域中为该域创建新的 NS 记录(example.com)。给它起子域名(acme.example.com)。对于 NS 记录的值,请为子域指定托管区域中的域名服务器的名称。

下面介绍当 Route 53 从子域 acme.example.com 或其子域之一的 DNS 解析程序中收到 DNS 查询时将发生的情况。

  1. Route 53 在域 (example.com) 的托管区域中进行查找,并找到子域 (acme.example.com) 的 NS 记录。

  2. Route 53 从域 (example.com) 的托管区域中的 acme.example.com NS 记录获取名称服务器,并将这些名称服务器返回到 DNS 解析程序。

  3. 解析程序向 acme.example.com 托管区域的名称服务器重新提交针对 acme.example.com 的查询。

  4. Route 53 使用 acme.example.com 托管区域中的记录响应此查询。

要将 Route 53 配置为使用子域的托管区域路由子域的流量,并从该域的托管区域中删除任何重复记录,请执行以下步骤:

配置 Route 53 使用子域的托管区域(控制台)
  1. 在 Route 53 控制台中,获取子域的托管区域的名称服务器:

    1. 在导航窗格中,选择 Hosted zones(托管区域)

    2. Hosted zones(托管区域)页面上,选择子域的托管区域的名称。

    3. 在右侧窗格中,复制 Hosted zones details(托管区域详细信息)部分中 Name servers(名称服务器)下所列的四个服务器的名称。

  2. 选择域 (example.com,而非子域) 的托管区域的名称。

  3. 选择创建记录

  4. 选择 Simple routing(简单路由),然后选择 Next(下一步)。

  5. 请选择定义简单记录

  6. 指定以下值:

    Name

    输入子域的名称(例如,acme.example.com)。这必须与您创建的子域名托管区域的名称完全匹配。

    Value/Route 流量到

    选择 IP address or another value depending on the record type(IP 地址或取决于记录类型的其它值),然后粘贴您在步骤 1 中复制的名称服务器的名称。

    记录类型

    选择 NS – Name servers for a hosted zone(NS — 用于托管区域的名称服务器)。

    TTL (秒)

    更改为更常用的 NS 记录值,如 172800 秒。

  7. 选择 Define simple record(定义简单记录),然后选择 Create records(创建记录)。

  8. 如果域的托管区域包含您在子域的托管区域中重新创建的任何记录,则从域的托管区域中删除这些记录。有关更多信息,请参阅 删除记录

    完成后,子域的所有记录应在子域的托管区域中。

为其他级别的子域路由流量

您可以将流量路由到子域的子域 (如 backend.acme.example.com),采用的方式与您将流量路由到子域 (如 acme.example.com) 相同。您可以在域的托管区域中创建记录,或者为较低级别的子域创建托管区域并在该新托管区域中创建记录。

如果您为较低级别的子域创建单独的托管区域,请在托管区域中为离域名更近一层的子域创建 NS 记录。这可确保流量正确路由到您的资源。例如,假设您需要路由以下各子域的流量:

  • subdomain1.example.com

  • subdomain2.subdomain1.example.com

要使用另一个托管区域来路由 subdomain2.subdomain1.example.com 的流量,您需要执行以下操作:

  1. 创建名为 subdomain2.subdomain1.example.com 的托管区域。

  2. 在 subdomain2.subdomain1.example.com 的托管区域中创建记录。有关更多信息,请参阅 在子域的托管区域中创建记录

  3. 复制 subdomain2.subdomain1.example.com 托管区域的名称服务器的名称。

  4. 在 subdomain1.example.com 托管区域中,创建一个名为 subdomain2.subdomain1.example.com 的 NS 记录,并粘贴 subdomain2.subdomain1.example.com 托管区域的名称服务器的名称。

    此外,删除 subdomain1.example.com 中的任何重复记录。有关更多信息,请参阅 更新域的托管区域

    创建此 NS 记录后,Route 53 开始使用 subdomain2.subdomain1.example.com 托管区域来路由 subdomain2.subdomain1.example.com 子域的流量。