1

我想使用带有 HTTP 2.0 的 AWS Elastic Load Balancer (ELB) v2 Application Load Balancer。我试图找出它是否支持在官方规范中被 ALPN 取代的下一个协议协商 (NPN)。

我需要 NPN,因为我有一些较旧的 Android 客户端需要它使用 HTTP 2.0。NGINX 有能力在没有 SPDY 的情况下打开 NPN(我不需要 SPDY,只需要 NPN)。由于 ELB 是基于 NGINX 的,我认为它可能会被启用。

浏览 ELB 文档,我看不到 ALPN 或 NPN 的提及。

4

1 回答 1

1

使用 curl 连接到应用程序负载均衡器实例表明它同时支持 NPN 和 ALPN。

没有选项:

$ curl --verbose -I --http2 https://example.com 2>&1 | grep ALPN
* ALPN, offering h2
* ALPN, offering http/1.1
* ALPN, server accepted to use h2

告诉 curl 明确不使用 ALPN:

$ curl --no-alpn --verbose -I --http2 https://example.com 2>&1 | grep NPN
* NPN, negotiated HTTP2 (h2)

在这两种情况下,请求都是使用 HTTP/2 提供的。

我针对针对在端口 80 上运行 nginx 的新 EC2 实例的应用程序负载均衡器进行了测试(即,后端支持的内容没有区别)。

于 2017-07-19T17:51:50.433 回答