你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

应用服务中的名称解析 (DNS)

应用在对依赖资源发出调用时将使用 DNS。 资源可以是 Azure 服务,例如 Key Vault、Azure 存储或 Azure SQL,也可以是应用所依赖的 Web API。 例如,当你想要对 myservice.com 发出调用时,你会使用 DNS 将名称解析为 IP。 本文介绍应用服务如何处理名称解析,以及如何确定要使用的 DNS 服务器。 本文还将介绍可用于配置 DNS 解析的设置。

应用服务中名称解析的工作原理

如果未将应用与虚拟网络集成,并且未配置自定义 DNS 服务器,则应用将使用 Azure DNS。 如果你将应用与虚拟网络集成,则应用将使用虚拟网络的 DNS 配置。 虚拟网络的默认设置也是使用 Azure DNS。 通过虚拟网络,还可以链接到 Azure DNS 专用区域,并将这些区域用于专用终结点解析或专用域名解析。

如果你使用自定义 DNS 服务器列表配置了虚拟网络,则应用服务中的名称解析将最多使用五个自定义 DNS 服务器。 如果虚拟网络使用的是自定义 DNS 服务器,而你使用的是专用终结点,请认真阅读此文。 你还需要考虑自定义 DNS 服务器是否能够解析应用使用的任何公共 DNS 记录。 DNS 配置需要将请求转发到公共 DNS 服务器,在自定义 DNS 服务器列表中包含公共 DNS 服务器(例如 Azure DNS),或者在应用级别指定备用服务器。

当应用需要使用 DNS 解析域名时,应用会向所有已配置的 DNS 服务器发送名称解析请求。 如果列表中的第一个服务器在超时限制内返回了响应,则你会立即收到返回的结果。 如果没有,应用会等待其他服务器在超时期限内响应,并按照配置服务器的顺序评估 DNS 服务器响应。 如果在超时期限内没有服务器响应,并且已配置重试,请重复此过程。

配置 DNS 服务器

单个应用允许你通过在 dnsConfiguration 站点属性对象中指定 dnsServers 属性来替代 DNS 配置。 最多可以指定五个自定义 DNS 服务器。 可以使用 Azure CLI 配置自定义 DNS 服务器:

az resource update --resource-group <group-name> --name <app-name> --resource-type "Microsoft.Web/sites" --set properties.dnsConfiguration.dnsServers="['168.63.129.16','xxx.xxx.xxx.xxx']"

DNS 应用设置

应用服务具有用于配置 DNS 服务器和名称解析行为的现有应用设置。 如果两者都存在,站点属性将替代应用设置。 站点属性的优势是可以使用 Azure Policy 进行审核并在配置时进行验证。 建议使用站点属性。

仍可以使用现有的 WEBSITE_DNS_SERVER 应用设置,并且可以使用任一设置来添加自定义 DNS 服务器。 如果你要使用应用设置来添加多个 DNS 服务器,必须用逗号分隔服务器,且不能添加空格。

使用应用设置 WEBSITE_DNS_ALT_SERVER 时,会将特定 DNS 服务器附加到配置的 DNS 服务器列表中。 备用 DNS 服务器会附加到显式配置的 DNS 服务器和从虚拟网络继承的 DNS 服务器。

应用设置还可用于配置名称解析行为,并命名为 WEBSITE_DNS_MAX_CACHE_TIMEOUTWEBSITE_DNS_TIMEOUTWEBSITE_DNS_ATTEMPTS

配置名称解析行为

如果你需要对名称解析进行精细控制,可以在应用服务中修改默认行为。 可以修改重试次数、重试超时和缓存超时。 更改行为(例如禁用或降低缓存持续时间)可能会影响性能。

属性名称 Windows 默认值 Linux 默认值 允许的值 说明
dnsRetryAttemptCount 1 5 1-5 定义将尝试进行解析的次数,1 表示不进行重试。
dnsMaxCacheTimeout 30 0 0-60 DNS 结果根据单个记录 TTL 进行缓存,但不超过定义的最大缓存超时时间。 将缓存设置为零意味着禁用缓存。
dnsRetryAttemptTimeout 3 1 1-30 重试或失败之前的超时。 超时还定义在主服务器未做出响应的情况下,等待辅助服务器结果的时间。

备注

  • Windows 容器应用不支持更改名称解析行为。
  • 若要配置 dnsMaxCacheTimeout,需要确保添加应用设置 WEBSITE_ENABLE_DNS_CACHE="true" 来启用缓存。 如果启用缓存,但未配置 dnsMaxCacheTimeout,超时将设置为 30。

使用以下 CLI 命令配置名称解析行为:

az resource update --resource-group <group-name> --name <app-name> --set properties.dnsConfiguration.dnsMaxCacheTimeout=[0-60] --resource-type "Microsoft.Web/sites"
az resource update --resource-group <group-name> --name <app-name> --set properties.dnsConfiguration.dnsRetryAttemptCount=[1-5] --resource-type "Microsoft.Web/sites"
az resource update --resource-group <group-name> --name <app-name> --set properties.dnsConfiguration.dnsRetryAttemptTimeout=[1-30] --resource-type "Microsoft.Web/sites"

使用以下 CLI 命令验证设置:

az resource show --resource-group <group-name> --name <app-name> --query properties.dnsConfiguration --resource-type "Microsoft.Web/sites"

后续步骤