注意
建议使用 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 侦听器置于禁用状态。 了解详细信息。
支持的证书
其他协议支持
HTTP2 支持
仅针对连接到应用程序网关侦听器的客户端提供 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 支持。
在客户端不支持 HTTP2 的实例中,将使用 HTTP1.1。 启用 HTTP2 不会禁用 HTTP1.1;它允许同时支持这两者。
注意
应用程序网关仅支持基于 TLS 的 HTTP/2(HTTPS 侦听器)。 不支持从 HTTP/1.1 进行 HTTP/2 Cleartext (h2c) 协议升级尝试,将导致 403 禁止访问错误。 尝试 h2c 升级的客户端应通过 HTTPS 使用本机 HTTP/2 连接,或保留在 HTTP/1.1 上。
WebSocket 支持
默认已启用 WebSocket 支持。 没有任何用户可配置的设置可以启用或禁用此支持。 您可以在 HTTP 和 HTTPS 侦听器中使用 WebSockets。
自定义错误页
可以为应用程序网关返回的不同响应代码定义自定义错误页。 可以为其配置错误页的响应代码包括 400、403、405、408、500、502、503 和 504。 可以使用全局级别或特定于侦听器的错误页配置为每个侦听器进行精细设置。 有关详细信息,请参阅创建应用程序网关自定义错误页。
注意
源自后端服务器的错误在不被应用程序网关修改的状态下传递到客户端。
TLS 策略
可以集中管理 TLS/SSL 证书,并减小后端服务器场的加密-解密开销。 采用集中式 TLS 处理还能指定符合安全要求的集中 TLS 策略。 你可以选择预定义或自定义 TLS 策略。
配置 TLS 策略来控制 TLS 协议版本。 可将应用程序网关配置为使用 TLS1.0、TLS1.1、TLS1.2 和 TLS1.3 中适用于 TLS 握手的最低协议版本。 默认情况下,SSL 2.0 和 3.0 已禁用且不可配置。 有关详细信息,请参阅应用程序网关 TLS 策略概述。
创建侦听器后,请将它关联到某个请求路由规则。 该规则确定如何将侦听器上收到的请求路由到后端。