如何在Tomcat中实现HTTP2?

设置Apache Tomcat中的HTTP2的逐步指南

最新版本的Tomcat 9.x已经添加了对完整的HTTP2的支持。HTTP/2比HTTP/1.1快得多。

如果您直接从Tomcat向浏览器提供内容(而不经过Web服务器),实施HTTP/2可以大大减少应用程序的加载时间,并且总体上提高性能。建议在非生产环境中测试以确保应用程序的预期行为。

如果您要在像Apache或Nginx这样的Web服务器上启用,请阅读此文档。

https://yaoweibin.com/http2-implementation-apache-nginx/

先决条件

在实施HTTP2之前,必须使用SSL/TLS证书对Tomcat进行保护。如果您需要帮助实施,请参阅此指南。

https://yaoweibin.com/tomcat-ssl-guide/

在Tomcat上实施HTTP/2

注意:在修改之前备份配置文件,以便在出现问题时可以恢复。

  • 登录到Tomcat服务器并转到安装文件夹
  • 转到conf文件夹
  • 使用vi或您喜欢的编辑器修改server.xml文件
  • 在SSL连接器中添加以下内容

总体上,它应该看起来像下面这样。


        
        
            
        
    

上面是我的实验配置,因此如果您要复制它,请不要忘记根据您的环境要求进行配置调整,特别是如果使用自定义端口和证书路径。

  • 通过转到bin文件夹并执行以下脚本重新启动Tomcat实例
./shutdown.sh
./startup.sh
  • 检查<catalina.out日志,您应该看到以下确认已配置为支持h2
24-Feb-2019 19:43:47.559 INFO [main] org.apache.coyote.http11.AbstractHttp11Protocol.configureUpgradeProtocol The ["https-openssl-apr-443"] connector has been configured to support negotiation to [h2] via ALPN

这意味着Tomcat已准备好通过HTTP2协议提供请求。

测试Tomcat是否提供H2

如何知道是否按预期工作?

有多种测试方法。

使用Chrome

用于测试Intranet应用程序。

  • 启动Google Chrome
  • 按F12打开开发者工具
  • 转到网络选项卡
  • 访问您的Tomcat应用程序,并注意Protocol

如您所见,请求是使用h2进行服务的。

使用日志

查看access.log文件并查看传入请求。

xx.xxx.xxx.xxx – – [24/Feb/2019:20:59:23 +0000] “GET / HTTP/2.0” 200 11468
xx.xxx.xxx.xxx – – [24/Feb/2019:20:59:23 +0000] “GET /tomcat.css HTTP/2.0” 200 5931
xx.xxx.xxx.xxx – – [24/Feb/2019:20:59:23 +0000] “GET /tomcat.png HTTP/2.0” 200 5103
xx.xxx.xxx.xxx – – [24/Feb/2019:20:59:23 +0000] “GET /bg-button.png HTTP/2.0” 200 713
xx.xxx.xxx.xxx – – [24/Feb/2019:20:59:23 +0000] “GET /bg-upper.png HTTP/2.0” 200 3103
xx.xxx.xxx.xxx – – [24/Feb/2019:20:59:23 +0000] “GET /bg-nav.png HTTP/2.0” 200 1401
xx.xxx.xxx.xxx – – [24/Feb/2019:20:59:23 +0000] “GET /asf-logo-wide.svg HTTP/2.0” 200 27530
xx.xxx.xxx.xxx – – [24/Feb/2019:20:59:23 +0000] “GET /bg-middle.png HTTP/2.0” 200 1918
xx.xxx.xxx.xxx – – [24/Feb/2019:20:59:23 +0000] “GET /favicon.ico HTTP/2.0” 200 21630

你是否注意到在每个请求中都有HTTP/2.0的分类?

使用基于互联网的工具

如果你的Tomcat应用程序URL可以在互联网上访问,你可以使用以下工具进行检查。

结论

在Tomcat上实现H2很简单。我强烈建议在实施后测试你的应用程序,以确保没有副作用。

如果你有兴趣学习Tomcat管理,请查看这个online course

类似文章