TCP 模式下基于 AWS ELB 的 HTTP2

Posted

技术标签:

【中文标题】TCP 模式下基于 AWS ELB 的 HTTP2【英文标题】:HTTP2 over AWS ELB under TCP Mode 【发布时间】:2016-03-07 13:09:44 【问题描述】:

有没有人有使用在 TCP 模式下运行的 AWS ELB 后面的 HTTP2 服务器的经验?

据我所知,AWS ELB 现在不支持 HTTP2,但是通过 TCP 模式,它应该透明地将请求传递给后端服务器。

有人有经验分享吗?

谢谢。

【问题讨论】:

有了这个,不要坚持ELB。试试 nginx,它支持 http/2。 @BMW 感谢您的回复。我们使用 nginx 支持 http/2 是可行的。我们只是想在这种情况下尝试 ELB。无论如何,感谢您的回复。 Stack Overflow 可能不是一个“分享经验”的地方。我们尝试专注于对特定问题的特定答案,因此最好先试一试,然后再回到这里(或serverfault.com)解决您遇到的特定问题。我不明白为什么在 TCP 模式下它不起作用,尽管来自单个浏览器的请求当然不会在后端之间“平衡”,只要连接存在,它们就会全部变为一个。您需要在后端支持 Proxy 协议,并在 ELB 上启用它,这样您当然会知道每个客户端的 IP。 @Michael-sqlbot 明白了。谢谢。 【参考方案1】:

据说新的 Application Load Balancer 支持 HTTP/2。我有点不清楚它是否有用,但是,如果 CloudFront 还不支持它: https://aws.amazon.com/blogs/aws/new-aws-application-load-balancer/

【讨论】:

现在可以了:aws.amazon.com/about-aws/whats-new/2016/09/… 支持 HTTP/2 到源服务器 - 只到客户端。【参考方案2】:

ELB 无法进行流水线连接。因此你不能欺骗它做 http2。也许随着新版本的发布,但不确定。

【讨论】:

【参考方案3】:

是的,TCP 端口 443 可以绕过 ELB 的 HTTPS,但由于 ELB 无法通过网络读取 cookie,因此无法进行会话粘性。

您也可以考虑使用 h2c(基于明文的 HTTP/2)。

【讨论】:

优秀的答案;感谢您节省大量时间@jayen

以上是关于TCP 模式下基于 AWS ELB 的 HTTP2的主要内容,如果未能解决你的问题,请参考以下文章

AWS Cloudwatch ELB 监控活动连接

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

AWS ELB - 服务 A 无法连接到同一安全组中的服务 B

在某些情况下,AWS ELB 不会将请求分发到 Auto Scaling 组 EC2 实例

我可以使用 AWS 自己的 ELB 证书进行 HTTPS/SSL 连接吗?

通过 ELB 访问 AWS EC2 实例