教程:将现有的自定义 DNS 名称映射到 Azure Web 应用

Azure Web 应用提供高度可缩放、自修补的 Web 托管服务。 本教程介绍如何将现有的自定义 DNS 名称映射到 Azure Web 应用。

在门户中导航到 Azure 应用

本教程介绍如何执行下列操作:

  • 使用 CNAME 记录映射子域(例如 www.contoso.com
  • 使用 A 记录映射根域(例如 contoso.com
  • 使用 CNAME 记录映射通配符域(例如 *.contoso.com
  • 将默认 URL 定向到自定义目录
  • 使用脚本自动执行域映射

若要将实时站点及其 DNS 域名迁移到应用服务,请参阅将活动 DNS 名称迁移到 Azure 应用服务

先决条件

完成本教程:

  • 创建一个应用服务应用,或者使用为其他教程创建的应用。
  • 购买域名,确保可以访问域提供商(如 GoDaddy)的 DNS 注册表。

    例如,若要添加 contoso.comwww.contoso.com 的 DNS 条目,必须能够配置 contoso.com 根域的 DNS 设置。

准备应用

若要将自定义 DNS 名称映射到 Web 应用,Web 应用的应用服务计划必须位于付费层(“共享”、“基本”、“标准”或“高级”)。 在此步骤中,需确保应用服务计划位于受支持的定价层。

Note

应用服务免费和共享(预览)托管计划是基本层,与其他应用服务应用在相同的 Azure VM 上运行。 某些应用可能属于其他客户。 这些层仅旨在用于开发和测试目的。

登录 Azure

打开 Azure 门户,然后使用 Azure 帐户登录。

从左侧菜单中选择“应用服务”,然后选择应用的名称。

在门户中导航到 Azure 应用

可以看到应用服务应用的管理页面。

检查定价层

在应用页面的左侧导航窗格中,向下滚动到“设置”部分,然后选择“扩展(应用服务计划)”。

扩展菜单

蓝色的框突出显示了应用的当前层。 检查以确保应用不在 F1 层中。 F1 层不支持自定义 DNS。

检查定价层

如果应用服务计划不在 F1 层中,请关闭“纵向扩展”页并跳转到映射 CNAME记录

扩展应用服务计划

选择任何非免费层(D1B1B2B3,或“生产”类别中的任何层)。 有关其他选项,请单击“查看其他选项”。

单击“应用” 。

检查定价层

如果看到以下通知,则表示缩放操作已完成。

缩放操作确认

映射域

可以使用 CNAME 记录A 记录将自定义 DNS 名称映射到应用服务。 请执行相应的步骤:

Note

应该对除根域(例如 contoso.com)以外的所有自定义 DNS 名称使用 CNAME 记录。 对于根域,请使用 A 记录。

映射 CNAME 记录

在教程示例中,将为 www 子域(例如 www.contoso.com)添加 CNAME 记录。

通过域提供商访问 DNS 记录

登录到域提供商的网站。

查找管理 DNS 记录的页面。 每个域提供商都有自己的 DNS 记录界面,因此请查阅提供商的文档。 查找站点中标记为“域名”、“DNS”或“名称服务器管理”的区域。

通常通过查看帐户信息,然后查找如“我的域”之类的链接,便可以找到 DNS 记录页面。 转到此页面,然后查找名为区域文件DNS 记录高级配置等名称的链接。

以下屏幕截图是 DNS 记录页的一个示例:

示例 DNS 记录页

在示例屏幕截图中,选择“添加”来创建记录。 某些提供商提供了不同的链接来添加不同的记录类型。 同样,请查阅提供商的文档。

Note

对于某些提供商(例如 GoDaddy),在选择单独的“保存更改”链接之前,对 DNS 记录的更改不会生效。

创建 CNAME 记录

添加一条 CNAME 记录,以便将子域映射到应用的默认主机名(<app_name>.chinacloudsites.cn,其中 <app_name> 是应用的名称)。

对于 www.contoso.com 域示例,添加一条 CNAME 记录来将名称 www 映射到 <app_name>.chinacloudsites.cn

添加 CNAME 后,DNS 记录页与以下示例相似:

在门户中导航到 Azure 应用

在 Azure 中启用 CNAME 记录映射

在 Azure 门户中,在应用页面的左侧导航窗格中,选择“自定义域”。

自定义域菜单

在应用的“自定义域”页面中,将完全限定的自定义 DNS 名称 (www.contoso.com) 添加到列表。

单击“添加主机名”旁边的 + 图标。

添加主机名

键入你为其添加了 CNAME 记录的完全限定的域名,例如 www.contoso.com

选择“验证”。

此时会显示“添加主机名”页。

确保“主机名记录类型”设置为“CNAME(www.example.com 或任何子域)”。

选择“添加主机名”。

将 DNS 名称添加到应用

新主机名可能需要经过一段时间后才会反映在应用的“自定义域”页中。 请尝试刷新浏览器来更新数据。

已添加 CNAME 记录

Note

若要添加 SSL 绑定,请参阅将现有的自定义 SSL 证书绑定到 Azure Web 应用

如果之前错过了某个步骤或者在某个位置的输入不正确,则会在页面的底部看到验证错误。

验证错误

映射 A 记录

在教程示例中,将为根域(例如 contoso.com)添加 A 记录。

复制应用的 IP 地址

若要映射 A 记录,需要具有应用的外部 IP 地址。 在 Azure 门户中,可以在应用的“自定义域”页面中找到此 IP 地址。

在 Azure 门户中的应用页左侧导航窗格中,选择“自定义域”。

自定义域菜单

在“自定义域”页面中,复制应用的 IP 地址。

在门户中导航到 Azure 应用

通过域提供商访问 DNS 记录

登录到域提供商的网站。

查找管理 DNS 记录的页面。 每个域提供商都有自己的 DNS 记录界面,因此请查阅提供商的文档。 查找站点中标记为“域名”、“DNS”或“名称服务器管理”的区域。

通常通过查看帐户信息,然后查找如“我的域”之类的链接,便可以找到 DNS 记录页面。 转到此页面,然后查找名为区域文件DNS 记录高级配置等名称的链接。

以下屏幕截图是 DNS 记录页的一个示例:

示例 DNS 记录页

在示例屏幕截图中,选择“添加”来创建记录。 某些提供商提供了不同的链接来添加不同的记录类型。 同样,请查阅提供商的文档。

Note

对于某些提供商(例如 GoDaddy),在选择单独的“保存更改”链接之前,对 DNS 记录的更改不会生效。

创建 A 记录

若要将 A 记录映射到应用,应用服务需要两条 DNS 记录:

  • A 记录映射到应用的 IP 地址。
  • TXT 记录映射到应用的默认主机名 <app_name>.chinacloudsites.cn。 应用服务仅在配置时使用此记录来验证你是否拥有自定义域。 自定义域经过验证并且在应用服务中配置后,可以删除此 TXT 记录。

对于 contoso.com 域示例,根据下表创建 A 和 TXT 记录(@ 通常表示根域)。

记录类型 主机
A @ 通过复制应用的 IP 地址获得的 IP 地址
TXT @ <app_name>.chinacloudsites.cn

添加记录后,DNS 记录页面看起来如以下示例:

DNS 记录页

在应用中启用 A 记录映射

在 Azure 门户中,返回到应用的“自定义域”页面,将完全限定的自定义 DNS 名称(例如 contoso.com)添加到列表。

单击“添加主机名”旁边的 + 图标。

添加主机名

键入你为其配置了 A 记录的完全限定的域名,例如 contoso.com

选择“验证”。

此时会显示“添加主机名”页。

确保“主机名记录类型”设置为“A 记录 (example.com)”。

选择“添加主机名”。

将 DNS 名称添加到应用

新主机名可能需要经过一段时间后才会反映在应用的“自定义域”页中。 请尝试刷新浏览器来更新数据。

已添加 A 记录

Note

若要添加 SSL 绑定,请参阅将现有的自定义 SSL 证书绑定到 Azure Web 应用

如果之前错过了某个步骤或者在某个位置的输入不正确,则会在页面的底部看到验证错误。

验证错误

映射通配符域

在教程示例中,你将通过添加 CNAME 记录将通配符 DNS 名称(例如 *.contoso.com)映射到应用服务应用。

通过域提供商访问 DNS 记录

登录到域提供商的网站。

查找管理 DNS 记录的页面。 每个域提供商都有自己的 DNS 记录界面,因此请查阅提供商的文档。 查找站点中标记为“域名”、“DNS”或“名称服务器管理”的区域。

通常通过查看帐户信息,然后查找如“我的域”之类的链接,便可以找到 DNS 记录页面。 转到此页面,然后查找名为区域文件DNS 记录高级配置等名称的链接。

以下屏幕截图是 DNS 记录页的一个示例:

示例 DNS 记录页

在示例屏幕截图中,选择“添加”来创建记录。 某些提供商提供了不同的链接来添加不同的记录类型。 同样,请查阅提供商的文档。

Note

对于某些提供商(例如 GoDaddy),在选择单独的“保存更改”链接之前,对 DNS 记录的更改不会生效。

创建 CNAME 记录

添加一条 CNAME 记录来将通配符名称映射到应用的默认主机名 (<app_name>.chinacloudsites.cn)。

对于 *.contoso.com 域示例,CNAME 记录将名称 * 映射到 <app_name>.chinacloudsites.cn

添加 CNAME 后,DNS 记录页面看起来如以下示例:

在门户中导航到 Azure 应用

在应用中启用 CNAME 记录映射

现在,可以向应用中添加与通配符名称匹配的任何子域了(例如,sub1.contoso.comsub2.contoso.com*.contoso.com 匹配)。

在 Azure 门户中,在应用页面的左侧导航窗格中,选择“自定义域”。

自定义域菜单

单击“添加主机名”旁边的 + 图标。

添加主机名

键入与通配符域匹配的完全限定的域名(例如 sub1.contoso.com),然后选择“验证”。

“添加主机名”按钮会被激活。

确保“主机名记录类型”设置为“CNAME 记录(www.example.com 或任何子域)”。

选择“添加主机名”。

将 DNS 名称添加到应用

新主机名可能需要经过一段时间后才会反映在应用的“自定义域”页中。 请尝试刷新浏览器来更新数据。

再次选择 + 图标来添加与通配符域匹配的另一主机名。 例如,添加 sub2.contoso.com

已添加 CNAME 记录

Note

若要添加 SSL 绑定,请参阅将现有的自定义 SSL 证书绑定到 Azure Web 应用

在浏览器中测试

浏览到前面配置的 DNS 名称(例如,contoso.comwww.contoso.comsub1.contoso.comsub2.contoso.com)。

在门户中导航到 Azure 应用

解决“404 未找到”问题

如果在浏览到自定义域的 URL 时收到 HTTP 404(未找到)错误,请验证域是否使用 WhatsmyDNS.net 对应用的 IP 地址进行解析。 如果没有,则可能是以下原因之一造成的:

  • 配置的自定义域缺少 A 记录和/或 CNAME 记录。
  • 浏览器客户端已缓存域的旧 IP 地址。 再次清除缓存并测试 DNS 解析。 在 Windows 计算机上,使用 ipconfig /flushdns 清除缓存。

重定向到自定义目录

默认情况下,应用服务将 Web 请求定向到应用代码的根目录下。 但是,某些 Web 框架不在根目录下启动。 例如,Laravelpublic 子目录中启动。 若要继续 contoso.com DNS 示例,此类应用应可在 http://contoso.com/public 中访问,但你实际上想要将 http://contoso.com 直接定向到 public 目录。 此步骤不涉及 DNS 解析,但涉及到自定义虚拟目录。

若要执行此操作,请选择 Web 应用页左侧导航窗格中的“应用程序设置”。

在页面底部,根虚拟目录 / 默认指向 site\wwwroot,这是应用代码的根目录。 将其改为指向例如 site\wwwroot\public,并保存所做的更改。

自定义虚拟目录

操作完成后,应用会返回根路径的正确页面(例如,http://contoso.com)。

使用脚本自动执行

可以在 Azure CLIAzure PowerShell 中使用脚本自动管理自定义域。

Azure CLI

Note

在 Azure 中国区使用 Azure CLI 2.0 之前,请先运行 az cloud set -n AzureChinaCloud 来改变云环境。如果想切回国际版 Azure,请再次运行 az cloud set -n AzureCloud

以下命令将配置的自定义 DNS 名称添加到应用服务应用。

az webapp config hostname add \
    --webapp-name <app_name> \
    --resource-group <resource_group_name> \ 
    --hostname <fully_qualified_domain_name> 

有关详细信息,请参阅将自定义域映射到 Web 应用

Azure PowerShell

以下命令将配置的自定义 DNS 名称添加到应用服务应用。

Set-AzureRmWebApp `
    -Name <app_name> `
    -ResourceGroupName <resource_group_name> ` 
    -HostNames @("<fully_qualified_domain_name>","<app_name>.chinacloudsites.cn") 

有关详细信息,请参阅将自定义域分配到 Web 应用

后续步骤

在本教程中,你已学习了如何执行以下操作:

  • 使用 CNAME 记录映射子域
  • 使用 A 记录映射根域
  • 使用 CNAME 记录映射通配符域
  • 将默认 URL 定向到自定义目录
  • 使用脚本自动执行域映射

转到下一教程,了解如何将自定义 SSL 证书绑定到 Web 应用。