你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
应用程序网关集成
本文将演练如何通过应用服务来配置应用程序网关,使用专用终结点来保护流量。 本文还将讨论有关使用服务终结点和与内外部应用服务环境集成的注意事项。 最后,本文介绍如何在源控制管理器 (SCM) 站点上设置访问限制。
与应用服务的集成
可以使用专用终结点来保护应用程序网关与应用服务应用之间的流量。 你需要确保应用程序网关可以使用 DNS 解析应用服务应用的专用 IP 地址。 或者,你也可以使用后端池中的专用 IP 地址,并替代 HTTP 设置中的主机名。
应用程序网关将缓存 DNS 查找结果。 如果使用完全限定的域名 (FQDN),并且依赖于 DNS 查找来获取专用 IP 地址,则如果在配置后端池后发生 DNS 更新或指向 Azure 专用 DNS 区域的链接,则可能需要重启应用程序网关。
若要重启应用程序网关,请使用 Azure CLI 停止并启动它:
az network application-gateway stop --resource-group myRG --name myAppGw
az network application-gateway start --resource-group myRG --name myAppGw
详细了解如何使用专用终结点配置应用服务应用。
使用服务终结点的注意事项
作为专用终结点的替代方法,可以使用服务终结点来保护来自应用程序网关的流量。 使用服务终结点可以只允许来自 Azure 虚拟网络中特定子网的流量,并阻止其他所有流量。 在以下方案中,你将使用此功能来确保应用服务实例只能接收来自特定应用程序网关实例的流量。
除了创建应用服务应用实例和应用程序网关以外,此配置还包括两个部分。 第一个部分是在部署应用程序网关的虚拟网络子网中启用服务终结点。 服务终结点确保所有离开子网发往应用服务的所有网络流量都通过特定的子网 ID 进行标记。
第二个部分是设置特定 Web 应用的访问限制,以确保仅允许通过此特定子网 ID 标记的流量。 可以根据偏好使用不同的工具配置访问限制。
使用 Azure 门户,可以按照四个步骤创建和配置应用服务和应用程序网关的设置。 如果已有现有的资源,则可以跳过前几个步骤。
- 参考应用服务文档中的某篇快速入门创建应用服务实例。 一个示例是 .NET Core 快速入门。
- 参考门户快速入门创建应用程序网关,但跳过有关添加后端目标的部分。
- 在应用程序网关中将应用服务配置为后端,但跳过有关限制访问的部分。
- 使用服务终结点创建访问限制。
现在可以通过应用程序网关访问应用服务。 如果尝试直接访问应用服务,你应会收到 403 HTTP 错误,指出 Web 应用在阻止你的访问。
内部应用服务环境的注意事项
内部应用服务环境不向 Internet 公开。 实例与应用程序网关之间的流量已隔离到虚拟网络。 若要配置内部应用服务环境,并使用 Azure 门户将其与应用程序网关集成,请参阅操作指南。
若要确保只有来自应用程序网关子网的流量抵达应用服务环境,可以配置一个影响应用服务环境中所有 Web 应用的网络安全组 (NSG)。 对于 NSG,可以指定子网 IP 范围,并选择性地指定端口 (80/443)。
若要将流量隔离到单个 Web 应用,需要使用基于 IP 的访问限制,因为服务终结点不适用于应用服务环境。 IP 地址应该是应用程序网关的专用 IP。
外部应用服务环境的注意事项
与多租户应用服务应用一样,外部应用服务环境具有面向公众的负载均衡器。 服务终结点不适用于应用服务环境。 借助应用服务环境,你可以通过应用程序网关的公共 IP 地址来使用基于 IP 的访问限制。 若要使用 Azure 门户创建外部应用服务环境,可以遵循此快速入门。
Kudu/SCM 站点的注意事项
SCM 站点(也称为 Kudu)是每个 Web 应用都存在的管理站点。 无法对 SCM 站点使用反向代理。 你很有可能需要将其锁定到单个 IP 地址或特定的子网。
若要使用与主站点相同的访问限制,可以使用以下命令继承设置:
az webapp config access-restriction set --resource-group myRG --name myWebApp --use-same-restrictions-for-scm-site
如果要为 SCM 站点添加单独的访问限制,可以使用 --scm-site
标志:
az webapp config access-restriction add --resource-group myRG --name myWebApp --scm-site --rule-name KudoAccess --priority 200 --ip-address 208.130.0.0/16
使用默认域的注意事项
配置应用程序网关以替代主机名并使用应用服务的默认域(通常是 azurewebsites.net
)是配置集成的最简单方法。 它不需要在应用服务中配置自定义域和证书。
本文讨论替代原始主机名的一般注意事项。 在应用服务中,有两种情况需要注意此配置。
身份验证
在应用服务(也称为“简单身份验证”)中使用身份验证功能时,应用通常会重定向到登录页。 由于应用服务不知道请求的原始主机名,因此重定向将在默认域名上进行,并且通常会导致错误。
若要解决默认重定向问题,可以将身份验证配置为检查转发标头,并将重定向域调整为原始域。 应用程序网关使用名为 X-Original-Host
的标头。 通过使用基于文件的配置来配置身份验证,可以将应用服务配置为适应原始主机名。 将此配置添加到配置文件:
{
...
"httpSettings": {
"forwardProxy": {
"convention": "Custom",
"customHostHeaderName": "X-Original-Host"
}
}
...
}
会话亲和性
在多实例部署中,会话亲和性可确保在会话的生命周期内将客户端请求路由到同一实例。 可以配置会话亲和性,以使 Cookie 域适应来自反向代理的传入标头。 通过将会话亲和性代理配置为 true,可以让会话亲和性查找 X-Original-Host
或 X-Forwarded-Host
,并使 Cookie 域适应在此标头中找到的域。 你应该在站点上配置访问限制,以确保流量来自反向代理,这是启用会话亲和性代理时的建议做法。
还可以使用以下命令配置 clientAffinityProxyEnabled
:
az resource update --resource-group myRG --name myWebApp --resource-type "Microsoft.Web/sites" --set properties.clientAffinityProxyEnabled=true
后续步骤
有关应用服务环境的详细信息,请参阅应用服务环境文档。
若要进一步保护 Web 应用,请参阅 Azure Web 应用程序防火墙文档中有关应用程序网关上的 Web 应用程序防火墙的信息。
若要使用 Azure Front Door 或应用程序网关在应用服务上部署具有自定义域的安全且可复原的站点,请参阅本教程。