如何让 HTTP/2 与 AWS ALB 和 Tomcat 9 协同工作

如何让 HTTP/2 与 AWS ALB 和 Tomcat 9 协同工作

因此,我很难让 HTTP/2 与较新版本的 AWS 应用程序负载均衡器和 Tomcat 9 配合使用。我在<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />tomcat 上的连接器中添加了它(标准未加密的 8080 连接器)。当我通过 LB 访问我的网站时,我看到根据 Chrome 使用的是 h2 协议,但当我查看我的访问日志时,似乎所有内容最终都使用 HTTP1.110.0.3.103 - - [04/Nov/2016:01:23:47 +0000] "GET /login.html HTTP/1.1" 200 4916

    <Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" >
        <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
    </Connector>

我正在尝试确保一切正常运行,从我所看到的情况来看,我猜测 LB 只是将所有内容作为 h2 处理,然后在后端将其转换回 http 1.1,这显然不是我想要的。

需要澄清的是,LB 是我的 TLS 集中器,与我的后端服务器的连接是不安全的。

答案1

ELB 在 beanstalk 环境中与 ec2 实例上的代理进行通信。使用 tomcat 可以获得 httpd。目前看来 mod_http2 还没有支持/包含在 aws linux 映像中。

如果存在 mod_http2,则所需的配置将如下所示

LoadModule http2_module modules/mod_http2.so

<IfModule http2_module>
    LogLevel http2:info
</IfModule>

相关内容