Tomcat 9 配置 HTTP/2
介紹
JavaEE 8的最重要的發展之一就是對HTTP/2的支持(現在的官方 RFC 7540 )。現在JCP的 JSR-369已經發展了近2年的時間,規范的負責人Ed Burns和Shing Wai Chan在推進該進程中做了大量的工作。
在寫作的時候,當前三家服務器廠商支持Servlet 4.0: Apache Tomcat 9.0.0.M4 , Jetty 9 和 WildFly 10.0.0.Final 。我們可以看一下如何配置 Tomcat 9 以支持它。
HTTP2的目標
HTTP/2的目標是增加Web瀏覽體驗的性能感受。
為什么需要HTTP2
一個Web頁面需要加載許多的資源。在HTTP 1.0中,對所有資源的請求都是同時發出的并且服務端響應所有的請求。如果其中的一個資源花費了額外的時間,因為頭線阻塞,那么所有其他的資源都會被阻塞。
從HTTP1.1升級
大多數Web站點使用HTTP1.1。要升級至 HTTP/2 可以使用頭更新 (101 協議開關) 來向服務端發送 h2c,該服務器會升級至 h2c (c 意味著明確的文本),注意,目前在Firefox和Chrome中并沒有h2c。
如何才是安全的呢?可以使用ALPN,它是一個TLS的擴展,在握手時可以發送一個擴展然后服務器就會檢測到通訊協議是h2。
下載Tomcat 9
為你的系統下載相應的 Tomcat 9 二進制發行版,然后通過解壓壓縮包來進行安裝。確保已經安裝了Java 8 SE。
用OpenSSL生成證書
正如上面已經討論過的,配置TLS來使用 HTTP/2是非常必要的,因為Firefox和Chrome對明確文本支持的缺乏。對于TLS,需要一個證書,如果還沒有準備好一個證書,可以用 OpenSSL 生成。
配置server.xml
Tomcat 9 的一個改變是對于TLS虛擬主機和多證書的支持是通過一個單一連接器實現的。.
Open the conf/server.xml file and make the following configuration changes.
<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>
重啟Tomcat。
結論
要測試這個配置可以訪問 https://localhost:8443 。如果看到了Tomcat主頁,那么就為Tomcat 9成功地配置了TLS。這時就可以使用 Servlet 4.0進行開發了。
關注這個空間可以了解更多有關 Servlet 4.0的教程。
如果你對HTTP/2規范感興趣, 你也可能對我的 HTTP/2 規范 教程感興趣。
來自: http://www.oschina.net/translate/configure-tomcat-9-forhttp2