AWS Elastic Load Balancer (ELB) v2 是不是支持下一个协议协商 (NPN)

Posted

技术标签:

【中文标题】AWS Elastic Load Balancer (ELB) v2 是不是支持下一个协议协商 (NPN)【英文标题】:Does AWS Elastic Load Balancer (ELB) v2 support Next Protocol Negotiation (NPN)AWS Elastic Load Balancer (ELB) v2 是否支持下一个协议协商 (NPN) 【发布时间】:2017-12-25 00:22:41 【问题描述】:

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

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

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

【问题讨论】:

【参考方案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 实例的应用程序负载均衡器进行了测试(即后端支持的内容没有区别)。

【讨论】:

以上是关于AWS Elastic Load Balancer (ELB) v2 是不是支持下一个协议协商 (NPN)的主要内容,如果未能解决你的问题,请参考以下文章

无法让 https 在 Elastic Load Balancer (AWS) 上工作

在 AWS Elastic Load Balancer 后面使用 Primus.io (websockets)

如何使用 .ebextensions 将 Application Load Balancer 固定响应添加到 AWS Elastic Beanstalk

非 www 到 www 使用 AWS Elastic Load Balancer 和 Nginx

AWS Elastic Load Balancer (ELB) v2 是不是支持下一个协议协商 (NPN)

kubectl 等待 AWS EKS 上的服务公开 .status.loadBalancer.ingress 字段中报告的 Elastic Load Balancer (ELB) 地址