应用程序网关侦听器配置

注意

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

侦听器是一个逻辑实体,它可以使用端口、协议、主机和 IP 地址检查传入的连接请求。 配置监听器时,必须输入与网关接收请求中对应的设置值。

使用 Azure 门户创建应用程序网关时,还可以通过选择侦听器的协议和端口来创建默认的侦听器。 可以选择是否要在侦听器上启用 HTTP2 支持。 创建应用程序网关后,可以编辑该默认侦听器的设置 (appGatewayHttpListener) 或创建新的侦听器。

侦听器类型

创建新侦听器时,可以在基本多站点之间进行选择。 选择取决于路由是否取决于接收请求中的主机名称。

路由取决于主机名称 侦听器类型 Behavior
No 基本 接受并转发任何域名的所有请求到后端池。 了解如何创建包含基本侦听器的应用程序网关
Yes 多站点 基于 Host 标头或主机名,将请求转发到不同的后端池。 应用程序网关需要使用 HTTP 1.1 主机标头才能在相同的公共 IP 地址和端口上托管多个网站。 要区分同一端口上的请求,必须指定与接收请求相匹配的主机名。

想了解更多关于多站点监听器的信息,请参见 使用应用网关托管多个站点

侦听器的处理顺序

对于 v1 SKU,请求根据规则顺序和侦听器类型进行匹配。 如果带有基本侦听器的规则在顺序中排在最前面,它会最先处理,并接受发往该端口和 IP 组合的任何请求。 为避免这种行为,请先配置使用多站点监听器的规则,然后将使用基本监听器的规则移到列表末尾。

对于 v2 SKU,规则优先级定义侦听器的处理顺序。 定义通配符监听器和基本监听器,其优先级编号高于站点特定监听器和多站点监听器。 这种配置可确保特定站点和多站点的监听器在通配符监听器和基础监听器之前执行。

下表总结了每个SKU中处理顺序的确定方式。

SKU 决定顺序的因素 建议配置
v1 规则的顺序和听众类型。 包含一个在排序中位于最前面的基本侦听器的规则会最先处理,并接受发往该端口和 IP 组合的任何请求。 先配置多站点监听器的规则,然后用基础监听器将规则推送到列表的最后一个位置。
v2 规则优先级。 将通配符监听器和基本监听器的优先级编号设为大于特定站点监听器和多站点监听器所使用的编号,以便特定站点监听器和多站点监听器优先执行。

前端 IP 地址

选择您计划与此侦听器关联的前端 IP 地址。 监听器会在此 IP 地址上监听传入的请求。

当客户端通过互联网访问该监听器背后的应用时,选择一个公共前端IP地址。 为未暴露到 Internet 的内部终结点选择一个私有前端 IP 地址,例如内部业务线应用程序,或者多层应用程序中仍需要负载分发、会话保持或 TLS 终止的某一层。 有关支持的组合,请参见 前端IP地址配置

注意

应用程序网关前端支持双堆栈 IP 地址。 最多可以创建四个前端 IP 地址:两个 IPv4 地址(公共和专用地址)和两个 IPv6 地址(公共和专用)。

前端端口

关联前端端口。 可以选择现有端口或新建一个端口。 选择允许的端口范围内的任意值。 不仅可以使用已知的端口(例如 80 和 443),而且还能使用任何适用的且允许的自定义端口。 同一端口可用于公共和专用侦听器。

端口80是HTTP监听器的典型选择,端口443是HTTPS监听器的典型选择。 当你的应用需要时使用自定义端口,并确认这个值是否在你 SKU 允许的范围内,因为 v1 和 v2 SKU 之间的支持范围不同。

注意

使用具有相同端口号的专用和公共侦听器时,应用程序网关会将入站流的“目标”更改为网关的前端 IP。 因此,根据网络安全组的配置,可能需要一个将“目标 IP 地址”作为应用程序网关的公共和专用前端 IP 的入站规则。

入站规则

  • 源:(根据你的要求)
  • 目标 IP 地址:应用程序网关的公共和专用前端 IP。
  • 目标端口:(根据侦听器配置)
  • 协议:TCP

出站规则:(无特定要求)

协议

选择HTTP或HTTPS。 当客户端与应用网关之间的流量必须加密时,选择HTTPS,这也让网关可以卸载加密和解密工作,这样你的后端服务器就不会被TLS的计算负担所累。 当该监听器接受的流量不需要加密时,选择HTTP。

  • 如果选择 HTTP,则客户端与应用程序网关之间的流量将不会加密。

  • 如果想要实现 TLS 终止端到端 TLS 加密,请选择 HTTPS。 客户端与应用程序网关之间的流量将会加密,并且 TLS 连接将在应用程序网关上终止。 如果要对后端目标进行端到端 TLS 加密,还必须在“后端 HTTP 设置”中选择 HTTPS。 这可确保在应用程序网关启动与后端目标的连接时加密流量。

若要配置 TLS 终止,必须向侦听器中添加 TLS/SSL 证书。 这样,应用程序网关便可以解密传入的流量并加密发到客户端的响应流量。 提供给应用程序网关的证书必须采用个人信息交换 (PFX) 格式,其中包含私钥和公钥。

注意

在为侦听器使用来自密钥保管库的 TLS 证书时,必须确保应用程序网关始终有权访问该链接的密钥保管库资源和其中的证书对象。 这样可以实现 TLS 终止功能的无缝操作,并维护网关资源的总体运行状况。 如果应用程序网关资源检测到配置错误的密钥保管库,它会自动将关联的 HTTPS 侦听器置于禁用状态。 了解详细信息

支持的证书

参见 TLS终止及端到端TLS及应用网关概述

其他协议支持

HTTP/2 支持

应用网关支持连接应用网关监听器的客户端的HTTP/2协议。 与后端服务器池的通信始终使用 HTTP/1.1。 默认情况下,HTTP/2 支持处于禁用状态。 以下 Azure PowerShell 代码摘要展示了如何启用这种支持:

$gw = Get-AzApplicationGateway -Name test -ResourceGroupName hm

$gw.EnableHttp2 = $true

Set-AzApplicationGateway -ApplicationGateway $gw

重要

当你通过 Azure 门户创建应用网关资源时,默认的 HTTP2 选项是启用的。 你可以在创建时选择禁用,然后在 Azure 门户的应用网关>配置中选择HTTP2 下的启用,重新启用 HTTP/2 支持。

当客户端不支持 HTTP/2 时,连接使用 HTTP/1.1。 启用HTTP/2并不意味着关闭HTTP/1.1;它支持了两者。

注意

应用程序网关仅支持基于 TLS 的 HTTP/2(HTTPS 侦听器)。 应用程序网关不支持从 HTTP/1.1 发起的 HTTP/2 明文 (h2c) 协议升级请求,并会返回 403 Forbidden 错误。 尝试 h2c 升级的客户端应通过 HTTPS 使用原生 HTTP/2 连接,或保持 HTTP/1.1。

HTTP/3(QUIC)支持

重要

Azure 应用程序网关 中的 HTTP/3 支持目前处于预览阶段。 在预览版中,此功能的功能、可用性和其他方面可能会更改以响应反馈。

此预览版在没有服务级别协议的情况下提供,不建议用于生产工作负荷。 某些功能可能不受支持,或者可能具有受限功能。

应用网关仅支持 HTTP/3 用于使用 Basic 监听器的客户端连接。 支持 HTTP/3 的监听器还可以接受来自客户端的 HTTP/1.1 或 HTTP/2 流量。 应用网关与后端服务器池的通信继续使用 HTTP/1.1。

HTTP/3 支持默认是被禁用的。

HTTP/3 支持的宣传方式

应用网关通过使用 Alt-Svc HTTP响应头来宣传HTTP/3支持。 当您在侦听器上启用 HTTP/3 时,应用程序网关会在响应中包含以下 Alt-Svc 标头。

Alt-Svc: h3=":<listener-port>"; ma=86400

禁用 HTTP/3 时,应用程序网关不会包含 Alt-Svc 标头。

支持 HTTP/3 的客户端可以使用宣传的服务在监听器端口上建立 QUIC 连接。 不支持 HTTP/3 的客户端继续使用 HTTP/2 或 HTTP/1.1 而非 TCP。

应用网关如何宣传HTTP/3支持的截图。

WebSocket 支持

默认已启用 WebSocket 支持。 没有任何用户可配置的设置可以启用或禁用此支持。 您可以在 HTTP 和 HTTPS 侦听器中使用 WebSockets。

自定义错误页

你可以为应用网关返回的不同响应代码自定义错误页面。 你可以为响应代码400、403、405、408、500、502、503和504配置错误页面。 使用全局级别或特定监听器的错误页面配置,为每个监听器进行细粒度设置。 有关详细信息,请参阅创建应用程序网关自定义错误页

注意

应用网关将错误从后端服务器传递给客户端,但不修改错误。

TLS 策略

可以集中管理 TLS/SSL 证书,并减小后端服务器场的加密-解密开销。 集中式TLS处理还允许你指定一个符合你安全需求的中央TLS策略。 你可以选择 预定义自定义 的TLS策略。

你配置TLS策略来控制TLS协议版本。 你可以配置应用网关,使用TLS 1.0、1.1、TLS 1.2和TLS 1.3的最低协议版本来进行TLS握手。 默认情况下,SSL 2.0 和 3.0 已禁用且不可配置。 有关详细信息,请参阅应用程序网关 TLS 策略概述

创建侦听器后,请将它关联到某个请求路由规则。 该规则决定了监听者收到的请求如何被路由到后端。

后续步骤