簡體   English   中英

是什么可以阻止我用apache激活http2?

[英]What could prevent me to activate http2 with apache?

我已經閱讀了很多有關http2的文檔,並且啟用它似乎很安全。 但是我需要100%確保不會進行任何回歸,或者至少要知道會發生什么回歸。

是什么導致我無法在生產apache服務器上啟用http2? 我必須仔細檢查哪些配置? 什么新行為可能會給我帶來麻煩?

這是一個非常基於意見的問題,而不是Stack Overflow的一種很好的格式,旨在提供基於事實的答案。 這也完全取決於您所提供的細節很少的環境。

但是,我對此感興趣,並且不介意花一點時間盡可能地回答。

這些是您應該考慮的事情:

  • 首先,您需要將Apache升級到支持HTTP / 2的版本。 理想情況下,您應該升級到最新版本(在撰寫本文時為2.4.29),因為HTTP / 2代碼自2.4.17首次啟動以來,已經在其中進行了許多更改,並且在該版本中不再標記為“實驗性”。 2.4.26。 這有多容易,取決於您的環境,但是打包版本(例如,通過RHEL和Centos上的yum )通常不是最新版本,並且超出打包環境的安全性,從源代碼構建或第三方存儲庫都不是一個步驟。掉以輕心。 另請參閱此問題 ,以獲取有關是否應使用mod_http2的更多信息(我認為是)。

  • 您需要考慮您來自哪個版本的Apache,以及升級時需要進行哪些更改(如果有)。 許多人仍在使用2.2,並且升級到2.4需要進行一些更改 如果已經在2.4的較早版本上,那么這應該不是問題,但仍有一些更改可能會影響您。 雖然2.2是生命的盡頭,所以這是您遲早需要做的事情。

  • HTTP / 2要求HTTPS可以在所有瀏覽器上運行,因此,如果您的站點尚未安裝在HTTPS上,則可能會有點升級。 但是,Web再次遷移到HTTPS,因此,如果還沒有這樣做,那么您遲早會需要執行此操作。

  • HTTP / 2要求OpenSSL 1.0.2或更高版本具有ALPN支持才能協商HTTP / 2。 同樣,許多Linux發行版都不包含此版本,即使那些具有此發行版的發行版(例如RHEL / Centos 7.4)也不會針對此版本構建Apache。 所以再次,您可能需要查看從源代碼構建或其他回購(請參見上面的要點)。

  • HTTP / 2需要良好的HTTPS配置(例如GCM密碼),這要歸功於OpenSSL 1.0.2,但可能需要檢查您的SSL / TLS配置以進行配置。 SSLLabs Server測試工具是查看此內容的最佳選擇。

  • 您是否使用websockets? 它們當前與HTTP / 2不兼容,因此如果使用它們,則需要保持HTTP / 1.1不變。 當前有計划將WebSockets添加到HTTP / 2,但它們仍處於討論階段。

  • 您應該知道,HTTP / 2強制使用小寫的HTTP標頭名稱。 傳統上,HTTP標頭名稱始終不區分大小寫,但是並非每個實現都正確實現了該實現,並且某些依賴於區分大小寫。

  • HTTP / 2響應仍然發送響應代碼(200、404),但是省略狀態文本(“確定”,“未找到”)。 同樣,這不會影響大多數正確編碼的應用程序,但是如果您依賴此響應消息,則可能需要做一些工作來解決此問題。

  • HTTP / 2旨在用於單個連接。 如果您當前分片不同域的資產,則它可能會嘗試將它們合並回一個連接 ,該連接應該可以無縫運行,但是如果HTTP / 2在所有分片域上均不可用,則會導致一些問題。

最后三點來自BBC出色的文章,描述了他們在轉移到HTTP / 2時遇到的問題

以上是有關如何升級以啟用HTTP / 2的所有要點。 坦率地說,在大多數標准Linux發行版上,這現在有點痛苦,但隨着新版本的普及,希望它將變得更加容易。

但是,一旦安裝到位並可以升級到HTTP / 2,則需要確定是否要升級

總體上,HTTP / 2被設計為向后兼容,因此應該進行無縫升​​級。 可以使用HTTP / 2的客戶端,不能使用HTTP / 2的客戶端(可以在可預見的將來配置)。

但是,HTTP / 2在技術領域仍然相對較新,並且客戶端或服務器端可能存在實現問題。 說它已經使用兩年了,我的經驗是非常積極的,沒有看到很多問題,但是與任何升級一樣,您應該在升級之前進行測試,測試,測試,然后進行監控。 我見過的大多數問題都是晦澀的問題,其中HTTP / 2的性能不如應有的表現,而不是顯示停止的問題,例如,大多數沒有我興趣的人都很難注意到它們。 20%的Web流量使用HTTP / 2,因此它是一種可靠的技術,並且很大程度上基於SPDY,在過去的幾年中,SPDY已被許多站點,服務器和客戶端使用,而沒有出現重大問題。

您還應該考慮HTTP / 2的好處。 在我看來,大多數網站都應該看到良好的速度改進(可能達到20%),但這並不能保證,這將取決於單個站點以及訪問者的連接和使用情況。 某些帶寬綁定的站點甚至可能會變慢。 但是,您需要設定切合實際的期望,並了解性能瓶頸在哪里,然后這將有助於了解HTTP / 2是否(以及在多少程度上)會有所幫助。 對於性能不佳的網站,這不是一個神奇的解決方案。

升級后要考慮的其他幾點:

  • 您是否針對HTTP / 2進行了優化(如果需要)? 這會影響那些仍使用HTTP / 1.1的訪問者嗎? 有關更多詳細信息,請參見此答案
  • 您是對任何后端服務器使用HTTP / 2還是在Web服務器上終止HTTP / 2(就像許多HTTPS一樣),並對任何后端應用程序服務器使用HTTP / 1.1? 這要求使用mod_proxy_http2 ,該模塊仍被標記為實驗性的,並且與主要mod_http2模塊相比,具有較少的使用量和過多的位置。 我現在不建議這樣做,除非您有充分的理由使用它。 如果不進行上述升級,許多后端應用程序服務器也將不支持HTTP / 2。
  • 您是否使用HTTP / 2 push等新功能? 這仍然是一項新興技術, 需要仔細考慮 ,最好不要對緩存摘要進行標准化。

歸根結底,沒有人,但是您可以“ 100%確保”您不會遇到任何問題,您需要進行測試以增強自信。 顯然,您對HTTP / 2的了解和了解越多,您就越會做好充分的准備來理解影響和任何問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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