44

有谁知道支持 HTTP/2.0 的最低版本的 Tomcat 是什么?我一直在他们的网站上到处寻找,但找不到任何有关此的详细信息。

4

3 回答 3

68

我是 Jetty 中的 HTTP/2 实现者,我留意其他实现 HTTP/2 的项目。

Tomcat 的 Mark Thomas概述了 Tomcat 9 对 HTTP/2 的支持

2017 年 1 月更新:Tomcat 8.5 支持 HTTP/2 参见 @joe-aldrich 回答 https://stackoverflow.com/a/37889873/2027465

考虑到 Servlet 4.0 将作为目标 HTTP/2 支持,并且 HTTP/2 支持需要 JDK 中的 ALPN 支持(我也参与其中),并且 JDK 中的 ALPN 支持计划用于 JDK 9,这可能需要很长时间才能实现。

但是,请注意其他 Servlet 容器已经提供 HTTP/2 支持。

Jetty 9.3.0对 HTTP/2 、客户端和服务器具有完整、健壮的支持。我们已经在自己的网站上运行 HTTP/2 好几个月了,我们认为 HTTP/2 支持生产已准备就绪。Jetty 的 HTTP/2 Push API 正在考虑包含在 Servlet 4.0 中。HTTP/2 Push 已经可用于以透明方式(通过 Servlet 过滤器)部署到 Jetty 的应用程序。

Undertow也有一个 HTTP/2 的实现。

Netty也有一个,但它不是基于 Servlet API。

于 2015-06-15T22:29:23.757 回答
23

Tomcat 8.5 已发布,具有从 Tomcat 9 向后移植的功能,并包括 HTTP/2 支持。

于 2016-06-17T20:26:15.693 回答
11

Tomcat 的最新版本(版本 9)完全支持 HTTP/2。但是,由于所有主要浏览器都仅通过 TLS 实现 HTTP/2,因此您需要配置 Tomcat 以允许这样做。本文解释了 Tomcat 中的 TLS 配置,但这里是摘要。

打开conf/server.xml文件并进行以下配置更改。

<Connector port="8443"
  protocol="org.apache.coyote.http11.Http11AprProtocol"
  maxThreads="150" SSLEnabled="true">
    <UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol"/>
    <SSLHostConfig honorCipherOrder="false">
        <Certificate certificateKeyFile="conf/ca.key"
          certificateFile="conf/ca.crt"/>
    </SSLHostConfig>
</Connector>
于 2017-07-23T11:46:49.883 回答