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

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

需要向域提供商添加的 DNS 记录类型取决于要添加到应用服务的域。

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

注意

有关演示如何配置 www 子域和托管证书的端到端教程,请参阅教程:使用自定义域和托管证书保护 Azure 应用服务应用

先决条件

  • 创建应用服务应用,或使用为另一教程创建的应用。 Web 应用的应用服务计划必须为付费层,而不是免费 (F1) 层。 请参阅纵向扩展应用以更新层级。
  • 请确保你可以编辑自定义域的 DNS 记录。 要编辑 DNS 记录,需要有权访问域提供商(例如 GoDaddy)的 DNS 注册表。 例如,若要添加 contoso.comwww.contoso.com 的 DNS 条目,必须能够配置 contoso.com 根域的 DNS 设置。 自定义域必须位于公共 DNS 区域中;不支持专用 DNS 区域。

1. 配置自定义域

  1. Azure 门户中,导航到应用的管理页。

  2. 在应用的左侧菜单中,选择“自定义域”。

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

    A screenshot showing how to open the Add custom domain dialog.

  4. 对于“域提供程序”,请选择“所有其他域服务”以配置第三方域。

  5. 对于 TLS/SSL 证书,如果应用位于基本层或更高层,请选择“应用服务托管证书”。 如果要继续使用共享层,或者想要使用自己的证书,请选择“稍后添加证书”。

  6. 对于“TLS/SSL 类型”,请选择所需的绑定类型。

    设置 说明
    自定义域 要为其添加 TLS/SSL 绑定的域名。
    私有证书指纹 要绑定的证书。
    TLS/SSL 类型 - SNI SSL:可添加多个 SNI SSL 绑定。 选择此选项可以使用多个 TLS/SSL 证书来保护同一 IP 地址上的多个域。 大多数新式浏览器(包括 Internet Explorer、Chrome、Firefox 和 Opera)都支持 SNI(有关详细信息,请参阅服务器名称指示)。
    - IP SSL:只能添加一个 IP SSL 绑定。 选择此选项只能使用一个 TLS/SSL 证书来保护专用公共 IP 地址。 配置绑定后,请按照 2. 重新映射基于 IP 的 SSL 的记录中的步骤进行操作。
    IP SSL 仅在“标准” 层或更高层中受支持。
  7. 对于“域”,请根据你拥有的域指定所需的完全限定的域名。 “主机名记录类型”框默认为建议使用的 DNS 记录,具体取决于该域是根域(如 contoso.com)、子域(如 www.contoso.com)还是通配符域(如 *.contoso.com)。

  8. 暂时不要选择“验证”。

  9. 对于应用服务中的每个自定义域,需要向域提供商提供两条 DNS 记录。 “域验证”部分显示必须通过域提供商添加的两条 DNS 记录。 选择相应的“复制”按钮,以帮助你完成下一步。

    以下屏幕截图显示 www.contoso.com 域的默认选择,其中显示了要添加的 CNAME 记录和 TXT 记录。

    A screenshot showing how to configure a new custom domain, along with a managed certificate.

    警告

    虽然不是绝对需要添加 TXT 记录,但出于安全原因,强烈建议这样做。 TXT 记录是域验证 ID,可帮助避免其他应用服务应用接管子域。 对于先前配置的没有此验证 ID 的自定义域,应将验证 ID(TXT 记录)添加到 DNS 配置中,以防止这些域面临相同的风险。 有关此常见高严重性威胁的详细信息,请参阅子域接管

2. 创建 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. 选择“添加”或相应的小组件来创建记录。

注意

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

选择要创建的记录的类型,然后按照说明进行操作。 可以使用 CNAME 记录或 A 记录将自定义 DNS 名称映射到应用服务。 当函数应用托管在消耗计划中时,仅支持 CNAME 选项。

根据下表创建两条记录:

记录类型 主机 注释
A @ “添加自定义域”对话框中显示的应用的 IP 地址。 域映射本身(@ 通常表示根域)。
TXT asuid “添加自定义域”对话框中显示的域验证 ID。 对于根域,应用服务访问 asuid TXT 记录以验证你对自定义域的所有权。

Screenshot that shows a DNS records page.

3. 验证并完成

  1. 返回 Azure 门户中的“添加自定义域”对话框,选择“验证”。

    A screenshot showing how to validate your DNS record settings in the Add a custom domain dialog.

  2. 如果两个域记录的“域验证”部分旁边都显示绿色对勾,则表明你已正确配置它们。 选择 添加 。 如果看到任何错误或警告,请在域提供商网站上的 DNS 记录设置中进行修复。

    A screenshot showing the Add button activated after validation.

    注意

    如果配置了 TXT 记录,但未配置 A 或 CNAME 记录,则应用服务会将其视为域迁移场景,并允许验证成功,但记录旁边不会显示绿色对勾标记。

  3. 你应该能看到该自定义域已添加到列表中。 你还应该看到标明无绑定的红色 X。

    如果之前选择了“应用服务托管证书”,请等待几分钟,应用服务会为你的自定义域创建托管证书。 该过程完成后,红色 X 将变为标有“安全”的绿色对勾标记。 如果选择了“稍后添加证书”,则此红色 X 将一直保留,直到你为该域添加专用证书配置绑定

    A screenshot showing the custom domains page with the new secured custom domain.

    注意

    除非为你的自定义域配置了证书绑定,否则从浏览器到域的任何 HTTPS 请求都将收到错误或警告,具体取决于浏览器。

4. 在浏览器中测试

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

Screenshot that shows navigation to an Azure app.

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

  • 浏览器客户端已缓存域的旧 IP 地址。 清除缓存并再次测试 DNS 解析。 在 Windows 计算机上,使用 ipconfig /flushdns 清除缓存。
  • 你配置了基于 IP 的证书绑定,应用的 IP 地址因此而发生了更改。 将 DNS 条目中的 A 记录重新映射到新的 IP 地址。

如果收到 Page not secure 警告或错误,那是因为域还没有证书绑定。 为域添加专用证书配置绑定

(可选)使用脚本自动化

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

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

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

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

后续步骤