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

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

Azure 应用服务提供高度可缩放、自修复的 Web 托管服务。 本教程介绍如何将现有的自定义域名系统 (DNS) 名称映射到应用服务。 若要将实时站点及其 DNS 域名迁移到应用服务而不停机,请参阅将活动 DNS 名称迁移到 Azure

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

1.准备环境

  • 创建应用服务应用,或使用为另一教程创建的应用。 Web 应用的应用服务计划必须为付费层,而不是免费 (F1) 层。 请参阅纵向扩展应用以更新层级。
  • 请确保你可以编辑自定义域的 DNS 记录。 要编辑 DNS 记录,需要有权访问域提供商(例如 GoDaddy)的 DNS 注册表。 例如,若要添加 contoso.comwww.contoso.com 的 DNS 条目,必须能够配置 contoso.com 根域的 DNS 设置。 你的自定义域必须在某个公共 DNS 区域中;专用 DNS 区域只在内部负载均衡器 (ILB) 应用服务环境 (ASE) 上受支持。
  • 如果还没有自定义域,可购买应用服务域

2. 获取域验证 ID

登录 Azure

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

在 Azure 门户中选择应用

  1. 搜索并选择“应用服务”。

    Screenshot that shows selecting App Services.

  2. 在“应用服务”页上,选择 Azure 应用的名称。

    Screenshot showing portal navigation to an Azure app.

    将看到应用服务应用的管理页。

    若要将自定义域添加到应用,需要使用域提供程序添加验证 ID 作为 TXT 记录来验证你对域的所有权。

  3. 在应用页的左侧窗格中,选择“自定义域”。

  4. 复制“自定义域”页中的“自定义域验证 ID”框中的 ID,以便进行下一步操作 。

    Screenshot that shows the ID in the Custom Domain Verification ID box.

    警告

    向自定义域添加域验证 ID 可防止出现无关联的 DNS 条目,并避免子域接管。 对于先前配置的没有此验证 ID 的自定义域,应将验证 ID 添加到 DNS 记录中,以防止这些域面临相同的风险。 有关此常见高严重性威胁的详细信息,请参阅子域接管

  1. (仅限 A 记录)若要映射 A 记录,需要应用的外部 IP 地址。 在“自定义域”页面中,复制 IP 地址的值 。

    Screenshot that shows portal navigation to an Azure app.

3. 创建 DNS 记录

  1. 请登录到域提供商的网站。

    可使用 Azure DNS 来管理域的 DNS 记录,并为 Azure 应用服务配置自定义 DNS 名称。 有关详细信息,请参阅教程:在 Azure DNS 中托管域

  2. 查找管理 DNS 记录的页面。

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

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

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

    Screenshot that shows an example DNS records page.

  3. 选择“添加”或相应的小组件来创建记录。

  4. 选择要创建的记录的类型,然后按照说明进行操作。 可以使用 CNAME 记录A 记录将自定义 DNS 名称映射到应用服务。

DNS 记录类型

方案 示例 建议的 DNS 记录
根域 contoso.com A 记录。 请勿对根记录使用 CNAME 记录(有关信息,请参阅 RFC 1912 第 2.4 部分)。
子域 www.contoso.com, my.contoso.com CNAME 记录。 可使用 A 记录直接将子域映射到应用的 IP 地址,但 IP 地址可能会更改。 CNAME 改为映射到应用的默认主机名,该主机名不易更改。
通配符 *.contoso.com CNAME 记录
  • 对于根域(如 contoso.com),请根据下表创建两条记录:

    记录类型 主机 注释
    A @ 通过复制应用的 IP 地址获得的 IP 地址 域映射本身(@ 通常表示根域)。
    TXT asuid 之前获得的验证 ID 对于根域,应用服务访问 asuid TXT 记录以验证你对自定义域的所有权

    Screenshot that shows a DNS records page.

  • 若要使用 A 记录(而不是建议的 CNAME 记录)映射子域(如 www.contoso.com),A 记录和 TXT 记录应改为类似于下表:

    记录类型 主机 注释
    A <子域>(例如 www) 通过复制应用的 IP 地址获得的 IP 地址
    TXT asuid.<subdomain>(例如 asuid.www) 之前获得的验证 ID

    Screenshot that shows a DNS records subdomain page.

注意

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

4. 在应用中启用映射

创建 DNS 记录后,在应用中启用映射。

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

    Screenshot that shows the Custom domains menu.

  2. 选择“添加自定义域”。

    Screenshot that shows the Add host name item.

  3. 键入已配置 A 记录的完全限定的域名,如 contoso.com

  4. 选择“验证”。 此时会显示“添加自定义域”页。

  5. 确保“主机名记录类型”设置为“A 记录 (example.com)”。 选择“添加自定义域”。

    Screenshot that shows adding a DNS name to the app.

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

    Screenshot that shows adding an A record.

    注意

    自定义域带有警告标签意味着该域尚未绑定到 TLS/SSL 证书。 从浏览器向自定义域发出任何 HTTPS 请求都会收到错误或警告,具体取决于浏览器。 若要添加 TLS 绑定,请参阅在 Azure 应用服务中使用 TLS/SSL 绑定保护自定义 DNS 名称

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

    Screenshot showing a verification error.

5. 在浏览器中测试

浏览至你之前配置的 DNS 名称。

Screenshot that shows navigation to an Azure app.

如果在浏览到自定义域的 URL 时收到 HTTP 404(未找到)错误,最常见的两个原因如下:

  • 配置的自定义域缺少 A 记录或 CNAME 记录。 在应用中启用映射之后,你可能已删除 DNS 记录。 检查 DNS 记录是否使用联机 DNS 查找工具进行了正确配置。
  • 浏览器客户端已缓存域的旧 IP 地址。 清除缓存并再次测试 DNS 解析。 在 Windows 计算机上,使用 ipconfig /flushdns 清除缓存。

(可选)使用脚本自动化

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

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

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

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

后续步骤