HTTP/1 目标组上的 Windows Server 2022 的 AWS ALB 运行状况检查有效,但 HTTP/2 无效

HTTP/1 目标组上的 Windows Server 2022 的 AWS ALB 运行状况检查有效,但 HTTP/2 无效

我已经设置了一个 AWS 应用程序负载均衡器,其目标组指定为 HTTP/1。目标组包含一个运行 IIS 的 Windows Server 2022 实例。健康检查功能(在 Amazon 内)运行正常,并报告服务器状态为“健康”。

当我创建具有相同规范的不同目标组(但将其指定为 HTTP/2 而不是 HTTP/1)时,运行状况检查状态显示“不健康”,运行状况详细信息显示“运行状况检查失败,代码为:[400]”

工作和非工作目标组均为 IPv4 和 HTTPS,并且健康检查也配置为 HTTPS。

我猜测 Windows Server 2022 中 HTTP/2 的 IIS 实现与 Amazon Application Load Balancer 的健康检查功能有点不兼容。

该网站上的另一篇文章建议检查生成的 HTTP 响应标头,尽管我不确定能否在其中找到任何错误。我附上了一张截图。

HTTP 响应标头

是否有人知道 AWS 应用程序负载均衡器中的运行状况检查功能是否适用于 Windows Server 2022 的 HTTP/2?

答案1

今天我再次尝试后就能让它工作了。

最初,我设置了一个 Amazon Application Load Balancer,并在 HTTPS 上设置了一个侦听器,以为 HTTP/2 可以工作,因为它是该负载均衡器上的设置。然而,事实证明,Windows Server 2022 上 HTTP/2 的当前实现需要来自负载均衡器的 TLS 通信,而不仅仅是 HTTPS Web 流量。

为了使其正常工作,我创建了一个 Amazon NETWORK 负载均衡器,并在端口 443 上使用 TLS 侦听器,将 ALPN 策略设置为“HTTP2Only”以仅允许 HTTP/2 流量(用于测试),使用相同的域证书,并且一切都运行良好。

我想分享这个来帮助其他人节省时间。希望这能有所帮助!

相关内容