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

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

注意

从 2024 年 6 月 1 日开始,所有新创建的应用服务应用都可以选择生成唯一的默认主机名,命名约定为 <app-name>-<random-hash>.<region>.azurewebsites.net。 现有应用名称将保持不变。

示例: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

有关更多详细信息,请参阅应用服务资源的唯一默认主机名

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. Azure 门户中,导航到应用的管理页。

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

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

    显示如何打开“添加自定义域”对话框的屏幕截图。

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

    注意

    要配置应用服务域,请参阅为 Azure 应用服务购买自定义域名

  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 地址。 配置绑定后,请按照重新映射基于 IP 的 SSL 的记录中的步骤进行操作。
    IP SSL 仅在“标准” 层或更高层中受支持。
  7. 对于“域”,请根据你拥有的域指定所需的完全限定的域名。 “主机名记录类型”框默认为建议使用的 DNS 记录,具体取决于该域是根域(如 contoso.com)、子域(如 www.contoso.com)还是通配符域(如 *.contoso.com

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

  9. 对于应用服务中的每个自定义域,需要向域提供商提供两条 DNS 记录。 “域验证”部分显示必须通过域提供商添加的两条 DNS 记录。 可以使用复制按钮复制下一部分所需的值。

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

    显示如何配置新的自定义域以及托管证书的屏幕截图。

    警告

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

创建 DNS 记录

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

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

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

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

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

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

    显示示例 DNS 记录页的屏幕截图。

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

注意

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

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

如下表所述创建两条记录:

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

显示 DNS 记录页的屏幕截图。

验证域所有权并完成映射

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

    显示如何在“添加自定义域”对话框中验证 DNS 记录设置的屏幕截图。

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

    显示验证后激活的“添加”按钮的屏幕截图。

    注意

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

  3. 你应该能看到该自定义域已添加到列表中。 你还可能会看到红色的 X 和文本“无绑定”

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

    显示具有新的安全自定义域的自定义域页的屏幕截图。

    注意

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

测试 DNS 解析

浏览到你配置的 DNS 名称。

显示到 Azure 应用的导航的屏幕截图。

如果在浏览到自定义域的 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 应用

后续步骤