将现有的自定义DNS名称映射到Azure应用服务
将现有的自定义DNS名称映射到Azure应用服务
本文将详细介绍如何将现有的自定义DNS名称映射到Azure应用服务。通过本文,你将学习到如何配置DNS记录、验证域所有权以及使用脚本自动化管理自定义域。
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记录。 |
先决条件
- 创建应用服务应用,或使用为另一教程创建的应用。Web应用的应用服务计划必须为付费层,而不是免费(F1)层。请参阅纵向扩展应用以更新层级。
- 请确保你可以编辑自定义域的DNS记录。要编辑DNS记录,需要有权访问域提供商(例如GoDaddy)的DNS注册表。例如,若要添加contoso.com和www.contoso.com的DNS条目,必须能够配置contoso.com根域的DNS设置。自定义域必须位于公共DNS区域中;不支持专用DNS区域。
- 如果还没有自定义域,可购买应用服务域。
配置自定义域
- 在Azure门户中,导航到应用的管理页。
- 在应用的左侧菜单中,选择"自定义域"。
- 选择"添加自定义域"。
- 对于"域提供程序",请选择"所有其他域服务"以配置第三方域。
- 对于"TLS/SSL证书",如果应用位于基本层或更高层,请选择"应用服务托管证书"。如果你要继续使用"共享"层,或者想要使用自己的证书,请选择"稍后添加证书"。
- 对于"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仅在"标准"层或更高层中受支持。 |
- 对于"域",请根据你拥有的域指定所需的完全限定的域名。"主机名记录类型"框默认为建议使用的DNS记录,具体取决于该域是根域(如contoso.com)、子域(如www.contoso.com)还是通配符域(如*.contoso.com)。
- 暂时不选择"验证"。
- 对于应用服务中的每个自定义域,需要向域提供商提供两条DNS记录。"域验证"部分显示必须通过域提供商添加的两条DNS记录。可以使用复制按钮复制下一部分所需的值。
以下屏幕截图显示了www.contoso.com域的默认选项。其中显示了要添加的CNAME记录和TXT记录。
警告:虽然不是绝对需要添加TXT记录,但出于安全原因,强烈建议这样做。TXT记录是域验证ID,可帮助避免其他应用服务应用接管子域。对于先前配置的没有此验证ID的自定义域,应将验证ID(TXT记录)添加到DNS配置中,以防止这些域面临相同的风险。有关此常见高严重性威胁的详细信息,请参阅子域接管。
创建DNS记录
- 请登录到域提供商的网站。
- 查找管理DNS记录的页面。
- 选择"添加"或相应的小组件来创建记录。
注意:对于某些提供商(例如GoDaddy),在你选择单独的"保存更改"链接之前,这些DNS记录不会生效。
选择要创建的记录的类型,然后按照说明进行操作。可以使用CNAME记录或A记录将自定义DNS名称映射到应用服务。当函数应用托管在消耗计划中时,仅支持CNAME选项。
如下表所述创建两条记录:
记录类型 | 主机 | 值 | 注释 |
---|---|---|---|
A | @ | "添加自定义域"对话框中显示的应用的IP地址。 | 域映射本身。(@通常代表根域。) |
TXT | asuid | "添加自定义域"对话框中显示的域验证ID。 | 对于根域,应用服务访问asuidTXT记录以验证你对自定义域的所有权。 |
使用A记录
如下表所述创建两条记录:
记录类型 | 主机 | 值 | 注释 |
---|---|---|---|
A | "添加自定义域"对话框中显示的IP地址。 | 域映射本身。 | |
TXT | asuid. | "添加自定义域"对话框中显示的域验证ID。 | 应用服务访问asuid. |
使用CNAME记录
如下表所述创建两条记录:
记录类型 | 主机 | 值 | 注释 |
---|---|---|---|
CNAME | 域映射本身。 | ||
TXT | asuid. | "添加自定义域"对话框中显示的域验证ID。 | 应用服务访问asuid. |
对于通配符名称(例如*.contoso.com中的*),请如下表中所述创建两条记录:
记录类型 | 主机 | 值 | 注释 |
---|---|---|---|
CNAME | * | 域映射本身。 | |
TXT | asuid | "添加自定义域"对话框中显示的域验证ID。 | 应用服务访问asuidTXT记录以验证你对自定义域的所有权。 |
验证域所有权并完成映射
- 返回Azure门户中的"添加自定义域"对话框,选择"验证"。
- 如果"域验证"部分在两条域记录的旁边显示了绿色对勾标记,则表明你已正确配置它们。选择"添加"。如果看到任何错误或警告,请在域提供商网站上的DNS记录设置中解决相关问题。
注意:如果你配置了TXT记录,但未配置A或CNAME记录,则应用服务会将更改视为域迁移方案并允许验证成功,但记录旁边不会显示绿色对勾标记。
你应该能看到该自定义域已添加到列表中。你还可能会看到红色的X和文本"无绑定"。
如果之前选择了"应用服务托管证书",请等待几分钟,应用服务会为你的自定义域创建托管证书。该过程完成后,红色X将变为绿色对勾标记,并且你会看到"安全"一词。如果选择了"稍后添加证书",则红色X将一直保留,直到你为该域添加专用证书并配置绑定。
注意:除非为你的自定义域配置了证书绑定,否则从浏览器到域的任何HTTPS请求都将收到错误或警告,具体取决于浏览器。
测试DNS解析
浏览到你配置的DNS名称。
如果在浏览到自定义域的URL时收到HTTP 404(未找到)错误,可能性最高的两个原因如下:
- 浏览器客户端已缓存域的旧IP地址。清除缓存并再次测试DNS解析。在Windows计算机上,可以使用
ipconfig /flushdns
清除缓存。 - 你配置了基于IP的证书绑定,应用的IP地址因此而发生了更改。将DNS条目中的A记录重新映射到新的IP地址。
如果收到"Page not secure"警告或错误,那是因为域还没有证书绑定。为域添加专用证书并配置绑定。
(可选)使用脚本自动化
可以使用Azure CLI或Azure PowerShell通过脚本自动管理自定义域。
Azure CLI
以下命令将配置的自定义DNS名称添加到应用服务应用。
az webapp config hostname add \
--webapp-name <app-name> \
--resource-group <resource_group_name> \
--hostname <fully_qualified_domain_name>
有关详细信息,请参阅将自定义域映射到Web应用。
PowerShell
以下命令将配置的自定义DNS名称添加到应用服务应用。
Set-AzWebApp `
-Name <app-name> `
-ResourceGroupName <resource_group_name> `
-HostNames @("<fully_qualified_domain_name>","<app-name>.azurewebsites.net")
有关详细信息,请参阅将自定义域分配到Web应用。