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 Elastic Load Balancer (ELB) v2 是不是支持下一个协议协商 (NPN)
AWS ELB - 服务 A 无法连接到同一安全组中的服务 B
在某些情况下,AWS ELB 不会将请求分发到 Auto Scaling 组 EC2 实例