配置Tomcat使用HTTP/2
轉(zhuǎn)自:?https://zhuanlan.zhihu.com/p/21349186?
前情提要:
Tomcat高效響應(yīng)的秘密(一) Sendfile與Gzip
Tomcat高效響應(yīng)的秘密(二) keep alive
前面高效響應(yīng)的兩篇,我們分析了Sendfile的特性以及HTTP1.1的keep-alive特性,基于這些功能,Tomcat可以更快速的響應(yīng)請求。
而在keep-alive的特性分析時,我們發(fā)現(xiàn)是服務(wù)端與客戶端在keep-alive未超時的時候,一直保持TCP的連接,這樣在新的請求到達(dá)時就避免了重新握手和斷開連接。
為了進(jìn)一步提升性能,Google率先發(fā)起并推出了Spdy,許多主流的瀏覽器都允以支持。最終IETF以此為參照,提出了HTTP/2的標(biāo)準(zhǔn)。
在減少延遲,加速頁面加載方面,維基百科上有如下描述:
-
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,直觀感受一下它的特點(diǎn)。
需要的材料有:
-
版本要大于 Tomcat 9.0.0 M4
-
OpenSSL
-
使用OpenSSL生成的證書文件
觀察新版本的Tomcat配置文件server.xml,其中包含如下內(nèi)容:
<!-- 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,執(zhí)行如下命令生成證書
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. 官網(wǎng)下載Native的dll文件,拷貝到c:\windows\System32目錄下,以支持Apr Connector。
3. 修改server.xml,將支持http2的https Connector配置去掉注釋,修改其中對應(yīng)的證書路徑為第一步生成的路徑。
<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目錄下中對應(yīng)日期的accesslog, 默認(rèn)情況下,tomcat的配置中默認(rèn)開啟了accesslog ,此時我們發(fā)現(xiàn),請求使用的協(xié)議已經(jīng)是HTTP 2.0
7. 為了觀察更加細(xì)致,可以配置Tomcat的日志級別,從而輸出更加詳細(xì)的日志。設(shè)置org.apache.coyote.http2.level = FINE,關(guān)于日志的原理,可以參考之前兩篇文章:
Tomcat的Logging
Tomcat的Logging -- 內(nèi)部實(shí)現(xiàn)方式
8. github 下載一個測試的demo?GitHub - jfclere/h2_demos
下載后需要在本地執(zhí)行.sh文件,生成對應(yīng)的html文件和相應(yīng)的images。
9. 部署第8步生成的文件到某個特定應(yīng)用中,或是新建一個空應(yīng)用將其添加進(jìn)去,訪問這個應(yīng)用,查看頁面對應(yīng)的執(zhí)行時間。
通過上面的這些步驟,我們可以更直觀的體驗(yàn)一把HTTP/2帶來的性能提升。我們后面的文章再分析其實(shí)現(xiàn)原理,各位可以先看之前的這篇文章
服務(wù)器推送之WebSocket--原理及Tomcat的實(shí)現(xiàn),了解協(xié)議的upgrade
在Youtube上,有Tomcat 的commiter 之一 Mark 介紹Tomcat 的Http/2的視頻,墻外的朋友可以直接訪問該鏈接:https://www.youtube.com/watch?v=oCFwgMvouis
墻內(nèi)的朋友,可以回復(fù)關(guān)鍵字http2,獲取下載地址。
相關(guān)閱讀
Tomcat的Connector組件
Tomcat高效響應(yīng)的秘密(二) keep alive
Tomcat高效響應(yīng)的秘密(一) Sendfile與Gzip
服務(wù)器推送之WebSocket--原理及Tomcat的實(shí)現(xiàn)
Tomcat的Logging
猜你喜歡
深度揭秘亂碼問題背后的原因及解決方式
WEB應(yīng)用是怎么被部署的?
怎樣調(diào)試Tomcat源碼
IDE里的Tomcat是這樣工作的!
重定向與轉(zhuǎn)發(fā)的本質(zhì)區(qū)別
怎樣閱讀源代碼
本專欄由曾從事應(yīng)用服務(wù)器核心研發(fā)的工程師維護(hù)。文章深入Tomcat源碼,分析應(yīng)用服務(wù)器的實(shí)現(xiàn)細(xì)節(jié),工作原理及與之相關(guān)的技術(shù),使用技巧,工作實(shí)戰(zhàn)等。起于Tomcat但不止于此。同時會分享并發(fā)、JVM等,內(nèi)容多為原創(chuàng),歡迎關(guān)注。
推薦關(guān)注同名公眾號:?Tomcat那些事兒
編輯于 2016-06-14轉(zhuǎn)載于:https://www.cnblogs.com/xifenglou/p/9394948.html
總結(jié)
以上是生活随笔為你收集整理的配置Tomcat使用HTTP/2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到叔叔生病了怎么回事
- 下一篇: 梦到前男友跟我求婚是什么意思