路由子域的流量
当您希望将子域(如 acme.example.com 或 zenith.example.com)的流量路由至您的资源时,您有两个选项:
- 在域的托管区域中创建记录
通常情况下,要路由子域的流量,应在托管区域中创建一条与域同名的记录。例如,要将 acme.example.com 的 Internet 流量路由到数据中心的 Web 服务器,应在 example.com 托管区域中创建一条名为 acme.example.com 的记录。有关更多信息,请参阅主题使用记录及其子主题。
- 为子域创建一个托管区域,并在新的托管区域中创建记录
您还可以为子域创建托管区域。使用单独的托管区域将 Internet 流量路由至子域的做法,有时称为“将子域的责任委托给托管区域”或“将子域委托给其他名称服务器”或类似用语的组合。下面概览了使用方式:
您可以创建一个托管区域,其名称与要路由流量的子域相同,例如 acme.example.com。
在新的托管区域中创建记录,以定义您要如何路由子域 (acme.example.com) 及其子域(如 backend.acme.example.com)的流量。
您可以获取在创建新托管区域时 Route 53 分配给新托管区域的名称服务器。
在域 (example.com) 的托管区域中创建新的 NS 记录,并指定您在步骤 3 中得到的四个名称服务器。
使用单独的托管区域为子域路由流量时,您可以使用 IAM 权限来限制对子域的托管区域的访问权限。如果您有多个由不同组管理的子域,则为每个子域创建托管区域,可以显著减少必须对域的托管区域中的记录具有访问权限的人数。
为子域使用单独的托管区域还允许您为域和子域使用不同的 DNS 服务。有关更多信息,请参阅 使用 Amazon Route 53 作为子域的 DNS 服务,但不迁移父域。
对于每个 DNS 解析程序中第一个 DNS 查询,这种配置对性能会有小的影响。解析程序必须先从根域的托管区域获取信息,然后从子域的托管区域获取信息。在子域的第一个 DNS 查询后,解析程序会缓存信息,且不需要再次获取此信息,直到 TTL 到期和其他客户端从该解析程序请求该子域为止。有关更多信息,请参阅在您创建或编辑 Amazon Route 53 记录时指定的值部分中的 TTL(秒)。
创建另一个托管区域来路由子域的流量
一种路由子域流量的方法是为子域创建一个托管区域,然后在新的托管区域中为子域创建记录。(更常用的选项是在域的托管区域中为子域创建记录。)
注意
虽然我们在此描述了在 Route 53 上创建和委托给子域托管区域的过程,但您也可以在其它名称服务器上创建 DNS 区域,并同样创建名称服务器 (NS) 记录,将责任委派给这些名称服务器。
过程概览:
-
为子域创建托管区域。有关更多信息,请参阅 为子域创建新的托管区域。
-
将记录添加到子域的托管区域。如果域的托管区域包含属于子域的托管区域中的任何记录,则在托管区域中为子域复制这些记录。有关更多信息,请参阅 在子域的托管区域中创建记录
-
在域的托管区域中为子域创建 NS 记录,这会将子域的责任委托给新托管区域中的名称服务器。如果域的托管区域包含属于子域的托管区域中的任何记录,则从域的托管区域中删除记录。(第 2 步中您在托管区域中为子域创建的副本。) 有关更多信息,请参阅 更新域的托管区域。
为子域创建新的托管区域
要使用 Route 53 控制台为子域创建托管区域,请执行以下步骤。
为子域创建托管区域 (控制台)
请登录 Amazon Web Services Management Console,并通过以下网址打开 Route 53 控制台:https://console.aws.amazon.com/route53/
。 -
如果您不熟悉 Route 53,请选择入门。
如果您已经在使用 Route 53,请在导航窗格中选择 Hosted zones(托管区域)。
-
选择 Create Hosted Zone(创建托管区域)。
-
在右侧窗格中,输入子域的名称,如 acme.example.com。您也可以根据需要输入注释。
有关如何指定除 a-z、0-9 和 - (连字符) 以外的字符以及如何指定国际化域名的信息,请参阅DNS 域名格式。
-
对于 Type(类型),接受 Public hosted zone(公有托管区域)的默认值。
-
在右窗格的底部,选择 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) 的名称服务器。在某些情况下,当记录存在但不在 DNS 解析程序将查询提交到的托管区域中时,Route 53 会返回 NXDOMAIN(不存在的域)。
有关更多信息,请参阅 使用记录。
更新域的托管区域
当您创建托管区域时,Route 53 会自动为该区域分配四个名称服务器。托管区域的 NS 记录标识响应域或子域的 DNS 查询的名称服务器。要开始使用子域的托管区域中的记录路由 Internet 流量,您应在域 (example.com) 的托管区域中创建新的 NS 记录,用子域 (acme.example.com) 名称为其命名。对于 NS 记录的值,您应从子域的托管区域指定名称服务器的名称。
下面介绍当 Route 53 从子域 acme.example.com 或其子域之一的 DNS 解析程序中收到 DNS 查询时将发生的情况。
-
Route 53 在域 (example.com) 的托管区域中进行查找,并找到子域 (acme.example.com) 的 NS 记录。
-
Route 53 从域 (example.com) 的托管区域中的 acme.example.com NS 记录获取名称服务器,并将这些名称服务器返回到 DNS 解析程序。
-
解析程序向 acme.example.com 托管区域的名称服务器重新提交针对 acme.example.com 的查询。
-
Route 53 使用 acme.example.com 托管区域中的记录响应此查询。
要配置 Route 53 使用子域的托管区域路由子域的流量并从域的托管区域中删除所有重复记录,请执行以下过程:
配置 Route 53 使用子域的托管区域(控制台)
-
在 Route 53 控制台中,获取子域的托管区域的名称服务器:
-
在导航窗格中,选择 Hosted zones(托管区域)。
-
在 Hosted zones(托管区域)页面上,选择子域的托管区域的名称。
-
在右侧窗格中,复制 Hosted zones details(托管区域详细信息)部分中 Name servers(名称服务器)下所列的四个服务器的名称。
-
-
选择域 (example.com,而非子域) 的托管区域的名称。
-
选择创建记录。
-
选择 Simple routing(简单路由),然后选择 Next(下一步)。
-
请选择定义简单记录。
-
指定以下值:
- 名称
-
输入子域的名称。
- 值/流量路由至
-
选择 IP address or another value depending on the record type(IP 地址或取决于记录类型的其它值),然后粘贴您在步骤 1 中复制的名称服务器的名称。
- 记录类型
-
选择 NS – Name servers for a hosted zone(NS — 用于托管区域的名称服务器)。
- TTL (秒)
-
更改为更常用的 NS 记录值,如 172800 秒。
-
选择 Define simple record(定义简单记录),然后选择 Create records(创建记录)。
-
如果域的托管区域包含您在子域的托管区域中重新创建的任何记录,则从域的托管区域中删除这些记录。有关更多信息,请参阅 删除记录。
完成后,子域的所有记录应在子域的托管区域中。
为其他级别的子域路由流量
您可以将流量路由到子域的子域 (如 backend.acme.example.com),采用的方式与您将流量路由到子域 (如 acme.example.com) 相同。要么在域的托管区域中创建记录;要么为更低级别的子域创建托管区域,然后在该新的托管区域中创建记录。
如果您选择为低一级子域创建单独的托管区域,请在与域名更近一级的子域的托管区域中为低一级的子域创建 NS 记录。这有助于确保将流量正确路由到您的资源。例如,假设您需要路由以下各子域的流量:
subdomain1.example.com
subdomain2.subdomain1.example.com
要使用另一个托管区域来路由 subdomain2.subdomain1.example.com 的流量,您需要执行以下操作:
创建名为 subdomain2.subdomain1.example.com 的托管区域。
在 subdomain2.subdomain1.example.com 的托管区域中创建记录。有关更多信息,请参阅 在子域的托管区域中创建记录。
复制 subdomain2.subdomain1.example.com 托管区域的名称服务器的名称。
在 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 子域的流量。