有人知道Tomcat支持HTTP/2.0的最低版本是什么吗?我已经在他们的网站上到处查找,但没有找到任何相关细节。
我是Jetty的HTTP/2实现者,我关注其他实现HTTP/2的项目。
Tomcat的Mark Thomas已经为Tomcat 9 概述了对HTTP/2的支持。
更新于2017年1月: Tomcat 8.5支持HTTP/2,请参见@joe-aldrich的回答https://dev59.com/B10Z5IYBdhLWcg3w-EXS#37889873。
考虑到Servlet 4.0的目标之一是支持HTTP/2,并且HTTP/2支持需要JDK中的ALPN支持(我也参与其中),而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的。
Tomcat 8.5已发布,其中包含了从Tomcat 9中回归的功能,并且支持HTTP/2。
最新版本的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>
<!--<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" /> -->