![](/img/trans.png)
[英]Use direct connection from Java application to Mysql Workbench? Or create a Php/Java server between to deliver data?
[英]Can we use Apache to deliver HTTP/2 connection for a java application server?
以下是我目前用於提供Web應用程序訪問的基本架構(前端的AngularJS - 后端REST API的JEE-JAX-RS):
客戶端 - > Apache - >應用服務器(Java容器 - 例如tomcat)
客戶端瀏覽器通過HTTPS(由Apache處理)連接到應用程序,Apache將連接轉發到Java容器(我正在使用Oracle Weblogic)。 一切正常。 但現在我想使用HTTP / 2。
顯然,HTTP / 2只能在JEE8(Servlet v4)中使用,這意味着在漫長的時間之前它不會像Weblogic那樣在解決方案中可用。
其實我有兩個問題:
Apache(和Nginx)目前無法在保留代理模式下工作,並使用HTTP / 2與后端通信。
當你有這樣的“混合”通信(瀏覽器到HTTP / 2中的Apache和Apache到HTTP / 1.1或AJP中的后端)時,你會失去許多HTTP / 2帶來的優化,特別是多路復用和HTTP / 2推送,而不是提到由於將請求從HTTP / 2轉換為HTTP / 1.1而反之亦然的開銷。
HTTP / 2已經在Java世界中可用: Jetty (我是Jetty HTTP / 2領導),Undertow和Netty已經提供了透明的HTTP / 2支持,因此您只需部署JEE應用程序,啟用HTTP / 2即可完成。
由於Apache和Nginx的這些限制,我們目前建議在Jetty前使用HAProxy(詳見此處詳述 )。 此配置將為您提供HTTP / 2的最大優勢:HAProxy執行的快速TLS卸載,強大的負載平衡,與后端的高效通信(無需轉換為HTTP / 1.1),HTTP / 2無處不在,因此具有所有優勢。
Jetty還提供自動HTTP / 2推送機制 ,據我所知,在Apache或Nginx中不可用。
專門針對您的問題:
mod_http2
以便瀏覽器和Apache通過HTTP / 2進行通信,但您可能會丟失HTTP / 2推送。 但是,與后端的通信將使用HTTP / 1.1。 這將起作用,但它不是最佳的HTTP / 2部署。 是的,您可以在Apache24 / conf文件夾中的httpd.conf文件中激活mod_http2。 您還需要啟用以下模塊:1。mod_log_config 2. mod_setenvif 3. mod_ssl 4. socache_shmcb_module您必須在httpd.conf文件中包含httpd-ssl.conf文件,方法是取消注釋行 - include / extra / httpd- ssl.conf在conf文件夾中包含證書和密鑰,並在https-ssl.conf文件中設置其路徑以上步驟將在Apache 2.4中啟用HTTP / 2
您可以通過安裝Tomcat-9為托管在Tomcat上的Java應用程序啟用HTTP / 2.0。 Tomcat-9支持HTTP / 2.0和服務器推送服務。
您可以使用以下鏈接https://www3.ntu.edu.sg/home/ehchua/programming/howto/ApachePlusTomcat_HowTo.html中的說明將您的請求從Apache 2.4重定向到Tomcat 9。
使用這些步驟,您可以啟用HTTP / 2.0以在客戶端瀏覽器,Apache和Java應用程序之間工作。 您將以這種方式獲得HTTP / 2.0的全部好處。
我已經在我的項目中實施了上述所有步驟,並獲得了高性能通信的全部獎勵。
如果您有任何疑問,可以在這里發表評論。
Tomcat 8.5中也提供HTTP / 2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.