应用程序网关常见问题

注意

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

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

常规

什么是应用程序网关?

Azure 应用程序网关以服务形式提供应用程序传送控制器。 它为应用程序提供第 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 信息。 或者可以在 Azure 门户的应用程序网关概述页上找到它。 如果使用内部 IP 地址,请在概述页面上查找信息。 对于 v1 SKU,2023 年 5 月 1 日之后创建的网关不会自动将默认 DNS 名称与公共 IP 资源关联。 对于 v2 SKU,请打开公共 IP 资源,然后选择“配置”。 “DNS 名称标签(可选)”字段可用于配置 DNS 名称。

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

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

对于 HTTP/1.1 连接,应用程序网关 v1 和 v2 SKU 中的 Keep-Alive 超时为 120 秒。 如果是专用 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 空闲超时设置为等于或长于 keep-alive 超时。

应用程序网关是否会重复使用与后端服务器建立的 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 协议,应用程序网关仅支持一个公共 IP 地址。 如果应用程序网关配置为 DualStack,则它可以支持两个公共 IP,一个用于 IPv4,一个用于 IPv6。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

在预览版中,应用程序网关通过其第 4 层代理支持 TLS/TCP 协议代理

使用 HTTP(S) 协议的应用程序网关第 7 层代理不支持 SMTP、IMAP 和 POP3 之类的电子邮件协议。 但是,对于一些支持的电子邮件服务,例如 Outlook Web Access (OWA)、ActiveSync 和使用 HTTP(S) 协议的 AutoDiscovery 流量,你可以使用第 7 层代理,它们的流量应该流过。 (注意:使用 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 之外的另一个 Cookie,名为 ApplicationGatewayAffinityCORS。 这些 Cookie 类似,但 ApplicationGatewayAffinityCORS Cookie 添加了另外两个属性:SameSite=NoneSecure。 这些属性甚至可以为跨源请求维护粘性会话。 有关详细信息,请参阅基于 Cookie 的相关性部分

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

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

性能

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

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

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

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

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

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

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

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

是,应用程序网关 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 支持此操作。 如果静态分配了专用前端 IP 配置,则无法将应用程序网关移动到另一个子网。 应用程序网关应处于“已停止”状态才能执行此操作。 停止或启动 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。

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

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

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

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

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

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

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

不是。

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

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

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

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

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

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

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

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

应用程序网关 v2 支持 IPv4 和 IPv6 前端。 目前,IPv6 支持仅适用于新的应用程序网关。 要支持 IPv6,虚拟网络应为双堆栈。 应用程序网关 v1 不支持双堆栈虚拟网络。

如何在只有一个专用前端 IP 地址的情况下使用应用程序网关 v2?

应用程序网关 v2 目前仅支持通过公共预览版进行专用 IP 前端配置(无公共 IP)。

对于当前正式版支持,应用程序网关 v2 支持以下组合:

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

要仅限具有当前功能的专用 IP 地址使用流量,请执行以下过程:

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

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

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

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

    2. 允许来自“”为服务标记“AzureLoadBalancer”,目标“端口”为“任意”的流量。

    3. 拒绝来自“”为服务标记“Internet”,目标“端口”为“任意”的所有入站流量。 在入站规则中给予此规则最低优先级

    4. 保留 AllowVNetInBound 等默认规则,以便不会阻止对专用 IP 地址的访问。

    5. 不能阻止出站 Internet 连接。 否则会遇到日志记录和指标的问题。

仅专用 IP 访问的 NSG 配置示例:仅适用于专用 IP 访问的应用程序网关 V2 NSG 配置

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

可以使用 Azure PowerShell 或 Azure CLI 停止和启动应用程序网关。 当你停止和启动应用程序网关时,计费也会相应停止和启动。 在已停止的应用程序网关上执行的任何 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 服务的不合规证书颁发机构

如需特定于应用程序网关的信息:

如果你在使用由某个吊销的 ICA 颁发的证书,则你的应用程序的可用性可能会中断。 基于你的应用程序,你可能会收到各种错误消息,其中包括但不限于:

  • 证书/已吊销的证书无效
  • 连接超时
  • HTTP 502

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

  1. 请与证书提供商联系,了解如何重新颁发证书。
  2. 重新颁发证书后,请为应用程序网关/WAF 上的证书更新完整的信任链(叶证书、中间证书、根证书)。 根据你使用证书的位置(侦听器或应用程序网关的 HTTP 设置),按照此处的步骤更新证书。 有关详细信息,请查看提到的文档链接。
  3. 更新后端应用程序服务器,以使用重新颁发的证书。 根据你所使用的后端服务器,你的证书更新步骤可能会有所不同。 请查看供应商提供的文档。

更新侦听器中的证书:

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

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

  1. Azure 门户中,转到与应用程序网关关联的 Key Vault 设置。
  2. 在存储区中添加或导入重新颁发的证书。 有关详细信息,请参阅快速入门:使用 Azure 门户创建密钥保管库
  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 使用“受信任的根证书”,你无需在此执行任何操作。

配置 - TLS/TCP 代理

应用程序网关的第 7 层和第 4 层是否使用相同的前端 IP 地址?

是的。 通过应用程序网关进行的第 7 层和第 4 层路由使用相同的前端 IP 配置。 这样,就可以将所有客户端定向到单个 IP 地址(公共或专用),并且相同的网关资源将根据配置的侦听器协议和端口路由这些客户端。

是否可以对 HTTP(S) 流量使用 TCP 或 TLS 代理?

虽然也可以通过 L4 代理协议为 HTTP(S) 流量提供服务,但我们不建议这样做。 应用程序网关的 L7 代理解决方案通过重写、会话亲和性、重定向、WebSocket、WAF 等高级功能基于 HTTP(S) 协议提供更好的控制和安全性。

第 4 层代理的属性名称是什么?

第 4 层功能的资源属性与第 7 层功能的资源属性不同。 因此,在使用 REST API 或 CLI 时,必须使用以下属性。

properties 用途
listener 对于基于 TLS 或 TCP 的侦听器
routingRule 将第 4 层侦听器与第 4 层后端设置相关联
backendSettingsCollection 对于基于 TLS 或 TCP 的后端设置

注意

不能将任何第 4 层属性用于 HTTP 或 HTTPS 协议设置。

是否可以将 TCP/TLS 协议侦听器与 HTTP(S) 协议后端设置相映射?

错误。 不能交叉链接第 4 层和第 7 层属性。 因此,路由规则仅允许将第 4 层类型侦听器链接到第 4 层类型后端设置。

L7 和 L4 属性能否同名?

不能对 L7 (httpListeners) 和 L4 (listeners) 使用相同的名称。 这一点也适用于其他 L4 属性,例如 backendSettingsCollection 和 routingRules。

使用第 4 层(TCP 或 TLS 协议)时,是否可以将专用终结点添加到后端池?

绝对是。 与第 7 层代理类似,可以将专用终结点添加到应用程序网关的后端池。 此专用终结点必须部署在应用程序网关的同一虚拟网络的相邻子网中。

应用程序网关是否对后端服务器使用 Keepalive 连接?

它不使用 Keepalive 进行后端连接。 对于前端侦听器连接上的每个传入请求,应用程序网关都会启动一个新的后端连接来满足该请求。

与应用程序网关建立连接时,后端服务器会看到哪个 IP 地址?

后端服务器将看到应用程序网关的 IP 地址。 目前,我们不支持“客户端 IP 预留”,该功能可让后端应用程序识别原始客户端的 IP 地址。

如何为 TLS 侦听器设置 TLS 策略?

相同的 TLS/SSL 策略配置适用于第 7 层 (HTTPS) 和第 4 层 (TLS)。 你现在可以将 SSL 配置文件(适用于特定于侦听器的 TLS 策略和相互身份验证)用于 TLS 侦听器。 但是,目前 SSL 配置文件只能通过 CLI、PowerShell 或 REST API 与 TLS 侦听器关联。

应用程序网关是否支持第 4 层路由的会话亲和性?

否。 目前不支持将客户端路由到同一后端服务器。 连接将以轮循方式分配到后端池中的服务器。

自动缩放功能是否适用于第 4 层代理?

是的,自动缩放功能也适用于 TLS 或 TCP 协议的流量高峰和下降情况。

Web 应用程序防火墙 (WAF) 是否支持第 4 层流量?

Web 应用程序防火墙 (WAF) 功能不适用于第 4 层。

应用程序网关的第 4 层代理是否支持 UDP 协议?

错误。 目前不提供对 UDP 的支持。

TLS/TCP 侦听器支持哪些端口?

允许的端口范围和异常列表也适用于第 4 层代理。

如何为公共和专用 TLS/TCP 代理侦听器使用相同的端口号?

目前不支持对 TLS/TCP 侦听器使用公用端口。

配置 - AKS 的入口控制器

什么是入口控制器?

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

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

是否可以直接配置应用程序网关,而不是使用入口控制器?

不支持直接配置应用程序网关。

如果需要更改应用程序网关上的设置,请使用入口控制器或其他 Kubernetes 对象上的公开配置(例如,使用支持的注释)进行更改。 应用程序网关与应用程序网关入口控制器 (AGIC) 连接后,该网关的几乎所有配置都将由入口控制器同步和控制。 如果尝试以命令方式或通过基础结构即代码直接配置应用程序网关,这些更改最终会被入口控制器覆盖。

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

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

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

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

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

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

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

有关通过 Helm 部署 AGIC 与部署为 AKS 加载项之间的差异,请参阅 Helm 部署与 AKS 加载项之间的差异,尤其是记录了通过 Helm 部署的 AGIC 与 AKS 加载项支持的方案比较的表格。 一般情况下,通过 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 或用户定义的路由阻止,你会看到未知状态。 有关详细信息,请参阅应用程序网关的后端运行状况、诊断日志记录和指标

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

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

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

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

后续步骤