应用程序网关常见问题

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

以下是有关 Azure 应用程序网关的常见问题。

常规

什么是应用程序网关?

Azure 应用程序网关以服务形式提供应用程序传送控制器 (ADC)。 它为应用程序提供第 7 层的各种负载均衡功能。 此服务高度可用、可缩放,且完全由 Azure 管理。

应用程序网关支持哪些功能?

应用程序网关支持自动缩放、TLS 卸载、端到端 TLS、Web 应用程序防火墙 (WAF)、基于 Cookie 的会话相关性、基于 URL 路径的路由、多站点托管和其他功能。 有关支持的功能的完整列表,请参阅应用程序网关简介

应用程序网关与 Azure 负载均衡器有何不同?

应用程序网关是第 7 层负载均衡器,这意味着,它只处理 Web 流量(HTTP、HTTPS、WebSocket 和 HTTP/2)。 它支持 TLS 终止、基于 Cookie 的会话相关性以及对流量进行负载均衡的轮循机制等功能。 负载均衡器在第 4 层对流量进行负载均衡(TCP 或 UDP)。

应用程序网关支持哪些协议?

应用程序网关支持 HTTP、HTTPS、HTTP/2 和 WebSocket。

应用程序网关如何支持 HTTP/2?

请参阅 HTTP/2 支持

支持在后端池中添加哪些资源?

应用程序网关已在哪些区域推出?

应用程序网关 v1(Standard 和 WAF)已在国际版 Azure 的所有区域推出。 它还在由世纪互联运营的 Microsoft Azure 中提供。

有关应用程序网关 v2(Standard_v2 和 WAF_v2)可用性,请参阅应用程序网关 v2 支持的区域

此部署是专门于订阅,还是在所有客户之间共享?

应用程序网关是虚拟网络中的专用部署。

应用程序网关是否支持 HTTP 到 HTTPS 的重定向?

支持重定向。 请参阅应用程序网关重定向概述

按什么顺序处理侦听器?

在何处可以找到应用程序网关的 IP 和 DNS?

如果使用公共 IP 地址作为终结点,可以在公共 IP 地址资源中找到 IP 和 DNS 信息。 或者可以在门户中应用程序网关的概述页上找到它。 如果使用内部 IP 地址,请在概述页面上查找信息。 对于 V1 SKU,2023 年 5 月 1 日之后创建的网关不会自动将默认 DNS 名称与公共 IP 资源关联。 对于 v2 SKU,请打开公共 IP 资源,然后选择“配置”。 “DNS 名称标签(可选)”字段可用于配置 DNS 名称。

保持活动状态超时和 TCP 空闲超时的设置有哪些?

Keep-Alive 超时控制应用程序网关在重新使用或关闭它之前将等待客户端在持久连接上发送另一个 HTTP 请求的时间。 “TCP 空闲超时”控制在没有活动的情况下 TCP 连接保持打开状态的时间。

应用程序网关 v1 SKU 中的 “保持活动状态超时”为 120 秒,而在 v2 SKU 中为 75 秒。 如果是专用 IP 地址,则该值不可配置,TCP 空闲超时的时长为 5 分钟。 在应用程序网关的 v1 和 v2 SKU 的前端虚拟 IP (VIP) 上,“TCP 空闲超时”是默认的 4 分钟。 你可以将 v1 和 v2 应用程序网关上的 TCP 空闲超时值配置为 4 分钟到 30 分钟之间的任何时间值。 对于 v1 和 v2 应用程序网关,需要导航到应用程序网关的公共 IP,并更改门户上公共 IP 的“配置”边栏选项卡下的 TCP 空闲超时。 可以通过运行以下命令,通过 PowerShell 设置公共 IP 的 TCP 空闲超时值:

$publicIP = Get-AzPublicIpAddress -Name MyPublicIP -ResourceGroupName MyResourceGroup
$publicIP.IdleTimeoutInMinutes = "15"
Set-AzPublicIpAddress -PublicIpAddress $publicIP

对于到应用程序网关 v2 SKU 上的前端 IP 地址的 HTTP/2 连接,空闲超时设置为 180 秒,不可配置。

应用程序网关是否重复使用与后端服务器建立的 TCP 连接?

是的。 应用程序网关重复使用与后端服务器的现有 TCP 连接。

能否重命名应用程序网关资源?

不是。 应用程序网关资源无法重命名。 必须使用其他名称创建新资源。

如果应用程序网关已被删除,是否有方法还原应用程序网关及其公共 IP?

不是。 应用程序网关资源或其公共 IP 被删除后无法还原。 必须创建新的资源。

在应用程序网关的生存期内,其 IP 或 DNS 名称是否会变化?

在应用程序网关 V1 SKU 中,如果停止再启动应用程序网关,则 VIP 可能会变化。 但是,与应用程序网关关联的 DNS 名称在网关的整个生命周期内不会更改。 由于 DNS 名称不会更改,建议使用 CNAME 别名并使其指向应用程序网关的 DNS 地址。 在应用程序网关 V2 SKU 中,IP 地址是静态的,这样 IP 地址和 DNS 名称就不会在应用程序网关的生存期内更改。

应用程序网关是否支持静态 IP?

是,应用程序网关 v2 SKU 支持静态公共 IP 地址和静态内部 IP。 v1 SKU 支持静态内部 IP。

应用程序网关是否支持在网关上使用多个公共 IP?

一个应用程序网关仅支持一个公共 IP 地址。

应该为应用程序网关创建多大的子网?

是否可将多个应用程序网关资源部署到单个子网?

是的。 除了给定应用程序网关部署的多个实例以外,还可以在包含不同应用程序网关资源的现有子网中预配另一个唯一的应用程序网关资源。

单个子网不能同时支持 v2 和 v1 应用程序网关 SKU。

应用程序网关 v2 是否支持用户定义的路由 (UDR)?

是,但仅限特定方案。 有关详细信息,请参阅应用程序网关基础结构配置

应用程序网关是否支持 x-forwarded-for 标头?

是的。 请参阅对请求的修改

部署应用程序网关需要多长时间? 更新时应用程序网关是否仍正常工作?

预配新的应用程序网关 v1 SKU 部署最多需 20 分钟。 更改实例大小或计数不会出现干扰,且在此期间网关处于活动状态。

大多数使用 v2 SKU 的部署大约需要 6 分钟进行预配。 但是,根据部署类型的不同,可能需要更长的时间。 例如,跨多个具有多个实例的可用性区域的部署可能需要 6 分钟以上的时间。

应用程序网关如何处理日常维护?

发起的对应用程序网关的更新一次应用到一个更新域。 更新每个更新域的实例时,其他更新域中的剩余实例将继续处理流量1。 活动连接将从更新的实例中抽出,最长可达 5 分钟,这有助于在更新开始之前建立与不同更新域中的实例的连接。 在更新期间,应用程序网关将临时以降低的最大容量运行,具体取决于配置的实例数。 只有当前实例集成功升级后,更新过程才会继续进行到下一组实例。

1 建议为应用程序网关 v1 SKU 部署配置最少 2 个实例,以确保在应用更新时至少有一个实例可以处理流量。

是否可以使用 Exchange Server 作为应用程序网关的后端?

应用程序网关不支持电子邮件协议,如 SMTP、IMAP 和 POP3。 HTTP/HTTPS 服务(例如 OWA、ActiveSync 和 AutoDiscovery 流量)可能会流经应用程序网关,但如果使用 WAF SKU,则可能需要排除 WAF。

是否提供了从 v1 SKU 迁移到 v2 SKU 的指南?

是否支持应用程序网关 v1 SKU?

是的。 应用程序网关 v1 SKU 仍受支持。 不过,强烈建议迁移到 v2,以利用该 SKU 中的功能更新。 有关 v1 和 v2 功能之间差异的详细信息,请参阅自动缩放和区域冗余应用程序网关 v2。 可以按照 v1-v2 迁移文档手动将应用程序网关 v1 SKU 部署迁移到 v2。

应用程序网关 V2 是否支持使用 NTLM 或 Kerberos 身份验证的代理请求?

不是。 应用程序网关 V2 不支持使用 NTLM 或 Kerberos 身份验证的代理请求。

在请求转发到我的应用程序时,为什么有些标头值不存在?

请求标头名称可以包含字母数字字符和连字符。 在请求发送到后端目标时,包含其他字符的请求标头名称将会被丢弃。 响应标头名称可以包含 RFC 7230 中定义的任何字母数字字符和特定符号,但下划线 (_) 除外。

支持。Chromium 浏览器 v80 更新对没有 SameSite 属性的 HTTP Cookie 引入了一项强制性要求:将其视为 SameSite=Lax。 这意味着,浏览器不会将应用程序网关关联 Cookie 发送到第三方上下文中。

为了支持此方案,除了现有的“ApplicationGatewayAffinity”Cookie 外,应用程序网关还会注入另一个名为“ApplicationGatewayAffinityCORS”的 Cookie。 这两个 Cookie 类似,但 “ApplicationGatewayAffinityCORS” 中添加了两个附加属性:SameSite=None; Secure。 这些属性甚至可以为跨源请求维护粘性会话。 有关详细信息,请参阅基于 Cookie 的关联部分

什么是活动侦听器与非活动侦听器?

活动侦听器与某个规则关联,将流量发送到后端池。 仅重定向流量的任何侦听器都不是活动侦听器。 与重定向规则关联的侦听器不会被视为活动侦听器。 如果重定向规则是基于路径的规则,则该重定向规则中的所有路径都必须重定向流量,否则侦听器被视为活动侦听器。 请参阅 Azure 订阅和服务的限制、配额与约束,了解各组件的限制的详细信息。

性能

应用程序网关如何支持高可用性和可伸缩性?

如果已部署两个或更多个实例,则应用程序网关 v1 SKU 支持高可用性方案。 Azure 跨更新域和容错域分配这些实例,确保实例不会全部同时发生故障。 为了支持可伸缩性,v1 SKU 将添加同一网关的多个实例来分担负载。

v2 SKU 可以自动确保新实例分布到各个容错域和更新域中。 如果选择“区域冗余”,则最新实例还将分布到各个可用性区域中以提供区域性故障复原能力。

如何使用应用程序网关实现跨数据中心的灾难恢复方案?

使用流量管理器,可以跨不同数据中心内的多个应用程序网关分配流量。

应用程序网关是否支持连接排出?

是的。 可以设置连接排出,以在不中断操作的情况下更改后端池内的成员。 有关详细信息,请参阅应用程序网关的“连接排出”部分

应用程序网关是否支持自动缩放?

是,应用程序网关 v2 SKU 支持自动缩放。 有关详细信息,请参阅自动缩放和区域冗余应用程序网关

手动或自动纵向扩展或缩减是否会导致停机?

不是。 实例将分布在升级域和容错域上。

是否可以在不中断的情况下从标准 SKU 更改为 WAF SKU?

是的。

是否可以在不造成中断的情况下,将实例大小从中型更改为大型?

是的。

配置

是否始终要将应用程序网关部署在虚拟网络中?

是的。 应用程序网关始终部署在虚拟网络子网中。 此子网只能包含应用程序网关。 有关详细信息,请参阅虚拟网络和子网要求

应用程序网关是否能够与其所在虚拟网络外部或其所在订阅外部的实例通信?

只要建立 IP 连接,应用程序网关就能与其所在的虚拟网络外部的实例进行通信。 应用程序网关还能与其所在订阅外部的实例通信。 如果你打算使用内部 IP 作为后端池成员,请使用虚拟网络对等互连Azure VPN 网关

如何更新基于 FQDN 的后端服务器的 IP 地址?

与任何 DNS 解析程序一样,应用程序网关资源遵循后端服务器 DNS 记录的 TTL(生存时间)值。 TTL 过期后,网关将执行查找以更新该 DNS 信息。 在此查找过程中,如果应用程序网关在获取响应时遇到问题(或找不到 DNS 记录),则网关将继续使用上一个已知良好的 DNS 值来提供流量。 了解详细信息

为何在更改虚拟网络的 DNS 服务器之后发生 502 错误或后端服务器不正常?

应用程序网关的实例使用虚拟网络的 DNS 配置进行名称解析。 更改任何 DNS 服务器配置后,需要重启(停止再启动)应用程序网关才能分配新的 DNS 服务器。 在此之前,对出站连接进行基于 FQDN 的名称解析可能失败。

是否可以在应用程序网关子网中部署其他任何组件?

不是。 但可以在子网中部署其他应用程序网关。

是否可以更改现有应用程序网关的虚拟网络或子网?

只能在同一虚拟网络中的子网之间移动应用程序网关。 具有公共和专用前端的 V1 以及仅具有公共前端的 V2 支持此操作。 还需要注意的是,只有在应用程序网关处于“已停止”状态时,才能执行此操作。 请记住,停止/启动 V1 将更改公共 IP。 此操作只能使用 Azure PowerShell 和 Azure CLI 通过运行以下命令来完成:

Azure PowerShell

$VNet = Get-AzVirtualNetwork -Name "<VNetName>" -ResourceGroupName "<ResourceGroup>"
$Subnet = Get-AzVirtualNetworkSubnetConfig -Name "<NewSubnetName>" -VirtualNetwork $VNet
$AppGw = Get-AzApplicationGateway -Name "<ApplicationGatewayName>" -ResourceGroupName "<ResourceGroup>"
Stop-AzApplicationGateway -ApplicationGateway $AppGw
$AppGw = Set-AzApplicationGatewayIPConfiguration -ApplicationGateway $AppGw -Name $AppGw.GatewayIPConfigurations.Name -Subnet $Subnet
#If you have a private frontend IP configuration, uncomment and run the next line:
#$AppGw = Set-AzApplicationGatewayFrontendIPConfig -Name $AppGw.FrontendIPConfigurations.Name[1] -Subnet $Subnet -ApplicationGateway $AppGw
Set-AzApplicationGateway -ApplicationGateway $AppGw

有关详细信息,请参阅 Set-AzApplicationGatewayIPConfiguration

Azure CLI

az network application-gateway stop -g <ResourceGroup> -n <ApplicationGatewayName>
az network application-gateway update -g <ResourceGroup> -n <ApplicationGatewayName> --set gatewayIpConfigurations[0].subnet.id=<subnetID>

应用程序网关子网是否支持网络安全组?

应用程序网关子网是否支持用户定义的路由?

应用程序网关子网中是否支持服务终结点策略?

错误。 应用程序网关子网中不支持存储帐户的服务终结点策略,对其进行配置将阻止 Azure 基础结构流量。

应用程序网关有哪些限制? 是否可以提高这些限制?

是否可以同时对外部和内部流量使用应用程序网关?

是的。 每个应用程序网关支持一个内部 IP 和一个外部 IP。

应用程序网关是否支持虚拟网络对等互连?

是的。 虚拟网络对等互连有助于对其他虚拟网络中的流量进行负载均衡。

如果通过 ExpressRoute 或 VPN 隧道连接本地服务器,是否可与这些服务器通信?

可以,只要允许这种流量。

是否可以使用一个后端池来为不同端口上的许多应用程序提供服务?

支持微服务体系结构。 若要探测不同的端口,需要配置多个后端设置。

自定义探测是否支持对响应数据使用通配符或正则表达式?

不是。

如何在应用程序网关中处理路由规则?

对于自定义探测,Host 字段是什么意思?

在应用程序网关上配置了多站点的情况下,Host 字段指定要将探测发送到的名称。 否则使用“127.0.0.1”。 此值不同于虚拟机主机名。 其格式为 <协议>://<主机>:<端口><路径>。

能否仅允许应用程序网关访问几个源 IP 地址?

是的。 请参阅限制对特定源 IP 的访问

能否同时对公共和专用侦听器使用同一个端口?

是的,可以使用具有相同端口号的公用和专用侦听器来同时支持公共和专用客户端(预览版功能)。 请注意,如果网络安全组 (NSG) 与应用程序网关的子网相关联,则可能需要根据应用程序网关的配置创建特定的入站规则。 了解详细信息

应用程序网关是否支持 IPv6?

应用程序网关 v2 目前不支持 IPv6。 它只能使用 IPv4 在双堆栈 VNet 中运行,但网关子网仅限 IPv4。 应用程序网关 v1 不支持双堆栈 VNet。

应用程序网关是否支持 FIPS?

应用程序网关 v1 SKU 可以在 FIPS 140-2 批准的操作模式(通常称为“FIPS 模式”)下运行。  FIPS 模式调用 FIPS 140-2 验证的加密模块,该模块确保将符合 FIPS 标准的算法用于加密、哈希处理和签名(如果已启用)。  为确保启用 FIPS 模式,在注册订阅后,必须通过 PowerShell、ARM 模板或 REST API 配置 FIPSMode 设置以启用 FIPSmode 配置。

如何实现将应用程序网关 V2 仅用于专用前端 IP 地址?

应用程序网关 V2 目前不支持仅专用 IP 模式。 它支持以下组合

  • 专用 IP 和公共 IP
  • 仅公共 IP

但若要将应用程序网关 V2 仅用于专用 IP,则可按以下过程操作:

  1. 使用公共和专用前端 IP 地址创建应用程序网关

  2. 不要为公共前端 IP 地址创建任何侦听器。 应用程序网关不会侦听公共 IP 地址上的任何流量,但前提是没有为其创建侦听器。

  3. 为应用程序网关子网创建并附加一个网络安全组,使用以下配置(按优先级顺序排列):

    a. 允许的流量来自使用 GatewayManager 服务标记的“源”,其“目标”为“任意”,“目标端口”为 65200-65535。 此端口范围是进行 Azure 基础结构通信所必需的。 这些端口通过证书身份验证进行保护(锁定)。 如果没有适当的证书,外部实体(包括网关用户管理员)将无法对这些终结点做出任何更改

    b. 允许源为“AzureLoadBalancer”服务标记且目标端口为“Any”的流量

    c. 拒绝源为“Internet”服务标记且目标端口为“Any”的所有入站流量。 在入站规则中为此规则指定最低优先级

    d. 保留默认规则(如允许 VirtualNetwork 入站),这样就不会阻止在该专用 IP 地址上进行的访问

    e. 不能阻止出站 Internet 连接。 否则会遇到日志记录、指标等方面的问题。

仅适用于专用 IP 访问的 NSG 配置示例:Application Gateway V2 NSG Configuration for private IP access only

如何停止和启动 Azure 应用程序网关?

可以使用 Azure PowerShell 或 Azure CLI 停止和启动 Azure 应用程序网关。 当你停止和启动应用程序网关时,计费也会相应停止和启动。 在已停止的应用程序网关上执行的任何 PUT 操作(如添加标签、运行状况探测、侦听器等)都会触发启动。 建议在更新配置后停止应用程序网关。

# Stop an existing Azure Application Gateway instance

$appGateway = Get-AzApplicationGateway -Name $appGatewayName -ResourceGroupName $resourceGroupName
Stop-AzApplicationGateway -ApplicationGateway $appGateway       
# Start an existing Azure Application Gateway instance

$appGateway = Get-AzApplicationGateway -Name $appGatewayName -ResourceGroupName $resourceGroupName
Start-AzApplicationGateway -ApplicationGateway $appGateway           
# Stop an existing Azure Application Gateway instance

az network application-gateway stop -g MyResourceGroup -n MyAppGateway
# Start an existing Azure Application Gateway instance

az network application-gateway start -g MyResourceGroup -n MyAppGateway

配置 - TLS

应用程序网关支持哪些证书?

应用程序网关支持自签名证书、证书颁发机构 (CA) 证书、扩展验证 (EV) 证书、多域 (SAN) 证书和通配符证书。

应用程序网关支持哪些加密套件?

应用程序网关支持以下密码套件。

  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_DHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_DHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_AES_256_GCM_SHA384
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA
  • TLS_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  • TLS_DHE_DSS_WITH_AES_256_CBC_SHA256
  • TLS_DHE_DSS_WITH_AES_128_CBC_SHA256
  • TLS_DHE_DSS_WITH_AES_256_CBC_SHA
  • TLS_DHE_DSS_WITH_AES_128_CBC_SHA
  • TLS_RSA_WITH_3DES_EDE_CBC_SHA
  • TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA

有关如何自定义 TLS 选项的信息,请参阅在应用程序网关上配置 TLS 策略版本和密码套件

应用程序网关是否支持重新加密发往后端的流量?

是的。 应用程序网关支持 TLS 卸载和端到端 TLS,因此支持重新加密发往后端的流量。

能否通过配置 TLS 策略来控制 TLS 协议版本?

是的。 可将应用程序网关配置为拒绝 TLS1.0、TLS1.1 和 TLS1.2。 默认情况下,SSL 2.0 和 3.0 已禁用且不可配置。

我是否可以配置密码套件和策略顺序?

是的。 在应用程序网关中,可以配置加密套件。 若要定义自定义策略,请至少启用下列其中一个加密套件。

  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
  • TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_128_GCM_SHA256
  • TLS_RSA_WITH_AES_256_CBC_SHA256
  • TLS_RSA_WITH_AES_128_CBC_SHA256

应用程序网关使用 SHA256 进行后端管理。

应用程序网关支持多少个 TLS/SSL 证书?

应用程序网关最多支持 100 个 TLS/SSL 证书。

应用程序网关是否支持 OCSP 和 OCSP 装订?

是,应用程序网关支持具有 OCSP 扩展的证书和服务器证书的 OCSP 装订。

应用程序网关支持使用多少个身份验证证书进行后端重新加密?

应用程序网关最多支持 100 个身份验证证书。

应用程序网关是否原生与 Azure 密钥保管库集成?

是,应用程序网关 v2 SKU 支持密钥保管库。 有关详细信息,请参阅使用 Key Vault 证书实现 TLS 终止

如何为 .com 和 .net 站点配置 HTTPS 侦听器?

对于基于多域(基于主机)的路由,可以创建多站点侦听器,设置使用 HTTPS 作为协议的侦听器,然后将侦听器与路由规则相关联。 有关详细信息,请参阅使用应用程序网关进行多站点托管

能否在 .pfx 文件密码中使用特殊字符?

不可以,只能在 .pfx 文件密码中使用字母数字字符。

我的 EV 证书由 DigiCert 颁发,而我的中间证书已被吊销。 如何在应用程序网关上续订我的证书?

证书颁发机构 (CA) 浏览器成员最近发布的报告详细介绍了由 CA 供应商颁发的多个证书,这些证书被我们的客户、Microsoft 以及较大型的技术社区使用,但不符合受公众信任的 CA 的行业标准。 有关非合规 CA 的报告,可参阅以下内容:

根据行业的合规性要求,CA 供应商已开始吊销非合规 CA 并颁发合规 CA,这要求客户的证书是重新颁发的。 Microsoft 正在与这些供应商密切合作,以最大程度地降低对 Azure 服务的潜在影响,但在“自带证书”(BYOC)  方案中使用的自颁发证书或证书仍存在意外被吊销的风险。

若要检查应用程序使用的证书是否已被吊销,请参阅 DigiCert 的公告证书吊销跟踪程序。 如果你的证书已被吊销或将被吊销,你将需要从你的应用程序中使用的 CA 供应商请求新证书。 若要避免应用程序的可用性由于证书被意外吊销而被中断,或要更新已吊销的证书,请参阅我们的 Azure 更新贴文,获取支持 BYOC 的各种 Azure 服务的修正链接:https://azure.microsoft.com/updates/certificateauthorityrevocation/

有关应用程序网关的特定信息,请参阅下内容:

如果使用由某个已吊销的 ICA 颁发的证书,则可能会中断应用程序的可用性,并且你可能会收到各种错误消息(具体取决于应用程序),其中包括但不限于:

  1. 证书/已吊销的证书无效
  2. 连接超时
  3. HTTP 502

若要避免应用程序由于此问题而出现任何中断,或者要重新颁发已吊销的 CA,你需要执行以下操作:

  1. 请与证书提供商联系,了解如何重新颁发证书。
  2. 重新颁发后,请将 Azure 应用程序网关/WAF 上的证书更新为完全信任链(叶证书、中间证书、根证书)。 根据证书的使用位置,在应用程序网关的侦听器或 HTTP 设置上,按照以下步骤更新证书,并查看所述的文档链接以获取详细信息。
  3. 更新后端应用程序服务器,以使用重新颁发的证书。 证书更新步骤可能因所用后端服务器而异。 请查看供应商提供的文档。

更新侦听器中的证书:

  1. Azure 门户中,打开应用程序网关资源。
  2. 打开与证书关联的侦听器设置。
  3. 单击“续订或编辑所选证书”。
  4. 上传新的 PFX 证书,并加密,然后单击“保存”。
  5. 访问网站并验证站点是否按预期方式工作。 有关详细信息,请参阅续订应用程序网关证书

如果要在应用程序网关侦听器中从 Azure KeyVault 引用证书,建议执行以下步骤来进行快速更改:

  1. Azure 门户中,导航到与应用程序网关关联的 Azure KeyVault 设置。
  2. 在存储区中添加/导入重新颁发的证书。 有关操作方法的详细信息,请参阅此处的文档。
  3. 导入证书后,导航到应用程序网关侦听器设置,然后在“从 Key Vault 选择证书”下,单击“证书”下拉箭头,然后选择最近添加的证书
  4. 单击“保存”。如需详细了解应用程序网关上使用 Key Vault 证书进行的 TLS 终止,请参阅使用 Key Vault 证书进行 TLS 终止

更新 HTTP 设置中的证书:

如果使用的是应用程序网关/WAF 服务的 V1 SKU,则必须将新证书上传为后端身份验证证书。

  1. Azure 门户中,打开应用程序网关资源。
  2. 打开与证书关联的 HTTP 设置。
  3. 单击“添加证书”,上传重新颁发的证书,然后单击“保存”。
  4. 稍后可以通过单击旧证书旁边的“...”选项按钮,选择“删除”,然后单击“保存”来删除旧证书。 有关详细信息,请参阅通过门户使用应用程序网关配置端到端 TLS

如果使用的是应用程序网关/WAF 服务的 V2 SKU,则无需在 HTTP 设置中上传新证书,因为 V2 SKU 使用“受信任的根证书”,你无需在此执行任何操作。

配置 - AKS 的入口控制器

什么是入口控制器?

Kubernetes 允许创建 deploymentservice 资源,以便在群集内部公开一组 pod。 为了向外公开同一服务,我们定义了一个 Ingress 资源,它提供负载均衡、TLS 终止和基于名称的虚拟托管。 为了满足此 Ingress 资源,需要一个入口控制器来侦听对 Ingress 资源进行的任何更改并配置负载均衡器策略。

借助应用程序网关入口控制器 (AGIC),可将 Azure 应用程序网关用作 Azure Kubernetes 服务(也称 AKS 群集)的入口。

单个入口控制器实例是否可以管理多个应用程序网关?

目前,入口控制器的一个实例只能关联到一个应用程序网关。

为什么我的带 kubenet 的 AKS 群集不能与 AGIC 一起使用?

AGIC 会尝试自动将路由表资源关联到应用程序网关子网,但 AGIC 可能会因缺少权限而失败。 如果 AGIC 无法将路由表关联到应用程序网关子网,则 AGIC 日志中会记录一个相应的错误来描述此问题。在这种情况下,必须手动将 AKS 群集创建的路由表关联到应用程序网关的子网。 有关详细信息,请参阅支持的用户定义路由

是否可以将不同的虚拟网络中的 AKS 群集和应用程序网关连接在一起?

可以,前提是这些虚拟网络已对等互连且其地址空间不重叠。 如果运行带 kubenet 的 AKS,请确保将 AKS 生成的路由表关联到应用程序网关子网。

何时应使用加载项部署?何时应使用 Helm 部署?

若要了解通过 Helm 部署的 AGIC 与作为 AKS 加载项部署的 AGIC 之间的差异,请参阅此处,尤其要查看相关的表,了解通过 Helm 部署的 AGIC 支持哪些情况,作为 AKS 加载项部署的 AGIC 支持哪些情况。 一般情况下,通过 Helm 进行部署可以在正式版发布之前测试 Beta 功能和候选版本。

是否可以控制将通过加载项部署的 AGIC 版本?

否。AGIC 加载项是一项托管服务,这意味着 Microsoft 会自动将该加载项更新到最新的稳定版本。

配置 - 相互身份验证

什么是相互身份验证?

相互身份验证是客户端与服务器之间的双向身份验证。 与应用程序网关的相互身份验证当前允许网关验证发送请求的客户端(客户端身份验证)。 通常,唯一对应用程序网关进行身份验证的就是客户端。 由于应用程序网关现在也可对客户端进行身份验证,因此就变为了相互身份验证,即应用程序网关和客户端相互进行身份验证。

应用程序网关与其后端池之间是否可进行相互身份验证?

不可以,当前只支持前端客户端和应用程序网关之间的相互身份验证。 当前不支持后端相互身份验证。

诊断和日志记录

应用程序网关提供哪些类型的日志?

应用程序网关提供三种日志:

  • ApplicationGatewayAccessLog:访问日志包含提交到应用程序网关前端的每个请求。 数据包括调用方的 IP、请求的 URL、响应延迟、返回代码,以及传入和传出的字节数。它针对每个应用程序网关包含一条记录。
  • ApplicationGatewayPerformanceLog:性能日志捕获每个应用程序网关的性能信息。 信息包括吞吐量(以字节为单位)、服务的请求总数、失败的请求计数,以及正常和不正常的后端实例计数。
  • ApplicationGatewayFirewallLog:对于使用 WAF 配置的应用程序网关,防火墙日志包含通过检测模式或阻止模式记录的请求。

所有日志每 60 秒收集一次。 有关详细信息,请参阅应用程序网关的后端运行状况、诊断日志和指标

如何知道后端池成员是否正常?

可以使用 PowerShell cmdlet Get-AzApplicationGatewayBackendHealth 或门户来确认运行状况。 有关详细信息,请参阅应用程序网关诊断

诊断日志的保留策略是什么?

诊断日志将发往客户的存储帐户。 客户可以根据偏好设置保留策略。 此外,可将诊断日志发送到事件中心或 Azure Monitor 日志。 有关详细信息,请参阅应用程序网关诊断

如何获取应用程序网关的审核日志?

在门户中应用程序网关的菜单边栏选项卡上,选择“活动日志”即可访问审核日志。

是否可以使用应用程序网关设置警报?

是的。 在应用程序网关中,警报是针对指标配置的。 有关详细信息,请参阅应用程序网关指标接收警报通知

如何分析应用程序网关的流量统计信息?

可通过多种方式查看和分析访问日志。 可以使用 Azure Monitor 日志、Excel、Power BI 等。

还可以使用一个资源管理器模板,针对应用程序网关访问日志安装和运行常用的 GoAccess 日志分析器。 GoAccess 提供宝贵的 HTTP 流量统计信息,例如唯一访问者、请求的文件、主机、操作系统、浏览器和 HTTP 状态代码。 有关详细信息,请参阅 GitHub 中的资源管理器模板文件夹中的自述文件

有哪些原因可能会导致后端运行状况返回未知状态?

通常,如果对后端的访问被应用程序网关子网中的网络安全组 (NSG)、自定义 DNS 或用户定义的路由 (UDR) 阻止,则会看到未知状态。 有关详细信息,请参阅应用程序网关的后端运行状况、诊断日志记录和指标

与应用程序网关 v2 子网关联的 NSG 是否支持 NSG 流日志?

由于当前的平台限制,如果你在应用程序网关 v2(Standard_v2、WAF_v2)子网上有 NSG,并且在其上启用了 NSG 流日志,则会看到不确定的行为。此方案目前不受支持。

应用程序网关在哪里存储客户数据?

应用程序网关不会将客户数据移到或存储到部署它的区域之外。

后续步骤

若要详细了解应用程序网关,请参阅什么是 Azure 应用程序网关?。 若要了解应用程序网关的 TLS 终止和端到端 TLS,请参阅在 Azure 应用程序网关上启用端到端 TLS