簡體   English   中英

我們可以使用Apache為Java應用服務器提供HTTP / 2連接嗎?

[英]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那樣在解決方案中可用。

其實我有兩個問題:

  1. 我可以激活Apache mod_http2並配置我的前端(AngularJS)以在HTTP / 2中進行通信,還是我的應用服務器還能夠處理HTTP / 2?
  2. 如果Apache在HTTP / 2中接收連接並通過HTTP / 1.1或AJP將其轉發到Java容器,我仍將受益於所有HTTP / 2優勢,即使部分連接不在HTTP / 2中?

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中不可用。

專門針對您的問題:

  1. 可以激活mod_http2以便瀏覽器和Apache通過HTTP / 2進行通信,但您可能會丟失HTTP / 2推送。 但是,與后端的通信將使用HTTP / 1.1。 這將起作用,但它不是最佳的HTTP / 2部署。
  2. 如果通信的一部分不在HTTP / 2中,您將無法從客戶端和后端之間的通信中獲得任何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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM