配置Tomcat使用HTTP/2
转自: https://zhuanlan.zhihu.com/p/21349186
前情提要:
Tomcat高效响应的秘密(一) Sendfile与Gzip
前面高效响应的两篇,我们分析了Sendfile的特性以及HTTP1.1的keep-alive特性,基于这些功能,Tomcat可以更快速的响应请求。
而在keep-alive的特性分析时,我们发现是服务端与客户端在keep-alive未超时的时候,一直保持TCP的连接,这样在新的请求到达时就避免了重新握手和断开连接。
为了进一步提升性能,Google率先发起并推出了Spdy,许多主流的浏览器都允以支持。最终IETF以此为参照,提出了HTTP/2的标准。
在减少延迟,加速页面加载方面,维基百科上有如下描述:
Data compression of HTTP headers
HTTP/2 Server Push.
Pipelining of requests
Fixing the head-of-line blocking problem in HTTP 1.x
Multiplexing multiple requests over a single TCP connection
我们来试用一样HTTP/2,直观感受一下它的特点。
需要的材料有:
版本要大于 Tomcat 9.0.0 M4
OpenSSL
使用OpenSSL生成的证书文件
观察新版本的Tomcat配置文件server.xml,其中包含如下内容:
<!-- Define a SSL/TLS HTTP/1.1 Connector on port 8443 with HTTP/2
This connector uses the APR/native implementation. When using the
APR/native implementation or the OpenSSL engine with NIO or NIO2 then
the OpenSSL configuration attributes must be used.
-->
<!--
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="conf/localhost-rsa-key.pem"
certificateFile="conf/localhost-rsa-cert.pem"
certificateChainFile="conf/localhost-rsa-chain.pem"
type="RSA" />
</SSLHostConfig>
</Connector>
-->
由于HTTP/2只支持在HTTPS中使用,因此证书是必须的,制做证书的原理,各位请自行Google。
在Tomcat中,要配置其支持HTTP/2,需要以下步骤:
使用openssl,执行如下命令生成证书
openssl genrsa -out server.key 2048
openssl rsa -in server.key -out server.key
openssl req -new -x509 -key server.key -out ca.crt -days 3650
2. 官网下载Native的dll文件,拷贝到c:\windows\System32目录下,以支持Apr Connector。
3. 修改server.xml,将支持http2的https Connector配置去掉注释,修改其中对应的证书路径为第一步生成的路径。
<Connector port="8443" protocol="org.apache.coyote.http11.Http11AprProtocol"
maxThreads="150" SSLEnabled="true" >
<UpgradeProtocol className="org.apache.coyote.http2.Http2Protocol" />
<SSLHostConfig>
<Certificate certificateKeyFile="conf/server.key"
certificateFile="conf/ca.crt"/>
</SSLHostConfig>
</Connector>
4. 重启Tomcat
5. 使用https://localhost:8443访问
6. 查看logs目录下中对应日期的accesslog, 默认情况下,tomcat的配置中默认开启了accesslog ,此时我们发现,请求使用的协议已经是HTTP 2.0

7. 为了观察更加细致,可以配置Tomcat的日志级别,从而输出更加详细的日志。设置org.apache.coyote.http2.level = FINE,关于日志的原理,可以参考之前两篇文章:
8. github 下载一个测试的demo GitHub - jfclere/h2_demos
下载后需要在本地执行.sh文件,生成对应的html文件和相应的images。
9. 部署第8步生成的文件到某个特定应用中,或是新建一个空应用将其添加进去,访问这个应用,查看页面对应的执行时间。
通过上面的这些步骤,我们可以更直观的体验一把HTTP/2带来的性能提升。我们后面的文章再分析其实现原理,各位可以先看之前的这篇文章
服务器推送之WebSocket--原理及Tomcat的实现,了解协议的upgrade
在Youtube上,有Tomcat 的commiter 之一 Mark 介绍Tomcat 的Http/2的视频,墙外的朋友可以直接访问该链接:https://www.youtube.com/watch?v=oCFwgMvouis
墙内的朋友,可以回复关键字http2,获取下载地址。
相关阅读
Tomcat高效响应的秘密(一) Sendfile与Gzip
猜你喜欢
本专栏由曾从事应用服务器核心研发的工程师维护。文章深入Tomcat源码,分析应用服务器的实现细节,工作原理及与之相关的技术,使用技巧,工作实战等。起于Tomcat但不止于此。同时会分享并发、JVM等,内容多为原创,欢迎关注。
推荐关注同名公众号: Tomcat那些事儿
配置Tomcat使用HTTP/2的更多相关文章
- mac下安装及配置tomcat
mac下的软件不像windows下的程序那样写注册表,对于tomcat的安装来说,在mac下是名符其实的绿色软件,具体操作如下: 1.到 apache官方主页 下载完整 tar.gz文件包.(没有专门 ...
- 小白 安装和配置Tomcat 局域网内访问网页
1.官网http://tomcat.apache.org/ ,下载tomcat,解压就好 2.官网www.oracle.com, 下载javaJDK,截图如下,点击黄色荧光笔
- IDEA 配置 tomcat的数据源
1.F4打开module setting面板,找到facets 配置项,这个配置项非常重要,里面可配置tomcat加载的web.xml和context.xml文件所在的路径,部署的时候IDEA会自动读 ...
- 解决eclipse配置Tomcat时找不到server选项(Mac通用)
集成Eclipse和Tomcat时找不到server选项: 按照网上的步骤如下: 在Eclipse中,窗口(window)——首选项(preferences)——服务器(Server)——运行时环境( ...
- eclipse配置tomcat 和JRE环境
配置JRE环境,通俗点讲就是添加一个不同版本的jdk window——preferences——java——installed jres 点击add添加 选择standard VM 选择一个本机正 ...
- eclipse配置tomcat出现错误:Could not load the Tomcat server configuration at \Servers\Tomcat v7.0 Server at localhost-config.
这是eclipse与之前的server配置冲突导致的,最简单的办法就是给Eclipse换个工作目录(Workspace). 步骤: 打开eclipse后,出现下面图片所示的页面,选择其他目录,重新配置 ...
- 配置Tomcat使用https协议
一. 创建tomcat证书 这里使用JDK自带的keytool工具来生成证书: 1. 在jdk的安装目录\bin\keytool.exe下打开keytool.exe 2. 在命令行中输入以下命令: ...
- 怎样给Myeclipse配置tomcat服务器
http://jingyan.baidu.com/article/4853e1e53465271909f72690.html Meclipse是java Web企业级开发中最流行的工具,java we ...
- Eclipse中安装配置Tomcat
Eclipse(4.4.x及以上)中安装配置Tomcat 以下配置说明全部针对免安装版本 基于tomcat的安装目录和运行目录是可以不同的,本文都会进行说明 首先简单介绍一下tomcat的目录结构,一 ...
- MyEclipse配置Tomcat开发JavaWeb程序JSP以及Servlet
1.安装准备 1).下载安装MyEclipse2014,这已经是最新版本. 2).下载Tomcat 官网:http://tomcat.apache.org/ 我们选择8.0: http://tomca ...
随机推荐
- tcpdump 和 wireshark 的实用例子
tcpdump: 1.用 tcpdump 截取本机 ip 10.2.1.2 10050 端口的包 tcpdump -nnv -i eth0 host 10.2.1.2 and port 10050 ...
- jsonp封装方法二
前言: 看到玉伯的聊聊jsonp的p,引发了另一种loader方式来跨域的方法,他把它叫做JSONM协议,原理和seajs相似,都是动态加载script,加载完成后执行callback, 同时还不用考 ...
- SharePoint中跨列表查询
1,最近的项目中遇到一个需求,站点中有几十个列表,其中每5,6个列表属于一个模块下的.客户的需求是,首页上显示一个模块下所有列表数据的前5条,并按创建时间排序. 2,刚刚考虑到这块的实现方法时,用的是 ...
- Windows 的 Oracle Data Access Components (ODAC)
下载 x64bit https://www.oracle.com/technetwork/cn/database/windows/downloads/index.html 适用于 Windows 的 ...
- day 92 跨域和CORS
跨域和CORS 本节目录 一 跨域 二 CORS 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 跨域 同源策略(Same origin policy)是一种约定, ...
- python 第一课作用
1.使用while循环输入 1 2 3 4 5 6 8 9 10 x=0while x<10: x=x+1 if x==7: print(' ') continue print(x)#学 ...
- Scala中的类学习
Scala中的类学习 从java了解类的情况下,了解Scala的类并不难.Scala类中的字段自动带getter和setter方法,用@BeanProperty注解生成javaBean对象的getXX ...
- 百度地图API和高德地图API资料集锦
[高德地图API]从零开始学高德JS API(五)路线规划——驾车|公交|步行 [高德地图API]从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自 ...
- 20155236范晨歌 Exp1PC平台逆向破解及Bof基础实践
出现的问题及解决: 在下载execstack时,出现了下列签名无效的错误! 解决方案:发现是密钥过期了,将新的密钥填入apt-keyring 输入命令:apt-key adv --keyserver ...
- 20155307刘浩《网络对抗》逆向及Bof基础
20155307刘浩<网络对抗>逆向及Bof基础 实践目标 本次实践的对象是一个名为pwn1的linux可执行文件.该程序正常执行流程是:main调用foo函数,foo函数会回显任何用户输 ...