天天看點

使用 LiteSpeed 輕松為網站開啟 HTTP/3 實踐前言實作安裝調試

使用 LiteSpeed 輕松為網站開啟 HTTP/3 實踐前言實作安裝調試

前言

HTTP/3 即 QUIC(發音同Quick),通過發音我們就知道 HTTP/3 又可以讓網站的速度更上一層樓。 HTTP/2 提速很重要的一點是使用了多路複用,一般來說同一域名下隻需要一個 TCP 連接配接。但是如果當這個連接配接中出現了丢包的情況,那就會導緻 HTTP/2 的表現情況反倒不如 HTTP/1.1 了。

如果出現丢包的情況下,整個 TCP 便會要開始等待重傳,導緻了後面所有資料都阻塞了。但是對于 HTTP/1.1 來說,因為可以開啟多個 TCP 連接配接,是以出現這種情況反到也就隻影響其中你們一個連接配接而已,剩餘的 TCP 連接配接還可以正常傳輸資料。

好嘛,有問題我們就解決問題,因為我們已經見識到了多路複用的好處,是以我們就去修改 TCP 協定,不過這已經是一件不可能完成的任務了。TCP 真的是太元老了,對 TCP 進行更新意味着要從作業系統上入手,那麼整個協定将不會被所有的老系統所支援,新系統的推廣何其艱難。

是以谷歌就更起爐竈搞了一個基于 UDP 協定的 QUIC 協定,因為 UDP 不需要三次握手,2016年,IETF開始緻力于協定的标準化。 将QUIC拆分為基于傳輸層的和應用層的協定。應用層協定被稱為

HTTP-over-QUIC

在2018年11月,IETF宣布 HTTP-over-QUIC 被正式命名為HTTP / 3。

如果上面大段背景介紹覺得煩,我們直接看下文即可:

  1. QUIC 協定有哪些優點,如何實作 0-RTT?
    1. QUIC 協定在傳輸層就支援多路複用,避免了隊頭阻塞問題。
    2. QUIC 協定基于 UDP,更自由更高效
    3. QUIC 協定借鑒了 TFO 的思想,支援會話上下文緩存,友善恢複,具備實作 0-RTT 的可能
  2. 傳統的 HTTP2 + SSL + TCP 協定棧有哪些缺點?
    1. SSL 的會話恢複依然需要一個 RTT,而且難以合并到 TCP 層
    2. TCP 的滑動視窗存在隊頭阻塞問題
    3. TCP 的重傳糾錯會浪費一個 RTT
  3. 為什麼 Google 要另起爐竈,基于 UDP 去做?
    1. TCP 由作業系統實作,很難更新
    2. UDP 非常高效,幾乎沒有性能負擔
    3. 将 QUIC 嵌入到 Chrome 中可以友善後續的更新疊代
  4. QUIC的特性究竟有哪些?
    1. 利用緩存,顯著減少連接配接建立時間
    2. 改善擁塞控制,擁塞控制從核心空間到使用者空間
    3. 沒有 head of line 阻塞的多路複用
    4. 前向糾錯,減少重傳
    5. 連接配接平滑遷移,網絡狀态的變更不會影響連接配接斷線。

改編自

全棧養成計劃

冰霜之地

實作

目前支援 QUIC 的 Web 服務軟體主要是 LiteSpeed 和 Caddy,Nginx 尚不支援現有教程都是通過 Docker 結合 Nginx+Caddy 來實作,穩定性和可靠性都得打上問号。

是以我就比較推薦基于 LiteSpeed 的來實作了,LiteSpeed 是一款企業級商業 Web 服務,相比開源社群軟體會有着更好的穩定性和可靠性。值得一提的是 HTTP/2 也是由 Lite Speed 率先實作的。

簡單介紹:

LiteSpeed 即 LiteSpeed Web Server(簡稱 LSWS),是一款企業級商用 Web 服務軟體,可以完美的 Apache HTTPD 相容體驗,.htaccess 規則可以直接相容而不像 Nginx 需要重寫,并相容常用的mod擴充。得益于基于事件的架構優勢,靜态内容比Apache Httpd 快 5 倍 ,動态内容更是快 40 倍,HTTPS 通路快 3 倍并可以應用硬體加速器。

更多介紹請看:

https://www.llstack.com/zh/LiteSpeed/

安裝

這裡我推薦通過 LLStack 一鍵包進行 Lite Speed 的安裝。 安裝教程:

https://www.llstack.com/zh/install/

一、篇幅限制,這裡以安裝簡單的輕量版為例。在 SSH 終端中輸入:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ivmm/LLStack/master/install.sh)" 2>&1 | tee llstack-all.log           

我們安裝完成:

使用 LiteSpeed 輕松為網站開啟 HTTP/3 實踐前言實作安裝調試

二、開始設定虛拟主機,運作腳本:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ivmm/LLStack/master/vhost.sh)"           

詳細講解請看文檔:

建立虛拟主機-步驟詳解

三、在第五步确認是否要開啟HTTPS,輸入

y

無論是 HTTP/2 還是 HTTP/3 都依賴于 HTTPS。

使用 LiteSpeed 輕松為網站開啟 HTTP/3 實踐前言實作安裝調試

四、第六步然後會讓我們輸入 密鑰檔案(.Key)和證書檔案(.crt)的路徑,不一定馬上就要存在,我們可以後續等建立完虛拟主機後再放到對應的路徑上(會有報錯,但是可以忽略)。

使用 LiteSpeed 輕松為網站開啟 HTTP/3 實踐前言實作安裝調試

五、第七步詢問是否開啟 HTTP/3 功能,輸入

y

為開啟

使用 LiteSpeed 輕松為網站開啟 HTTP/3 實踐前言實作安裝調試

六、然後我們輸入任意鍵即可開始自動配置,

CTRL+C

為取消

使用 LiteSpeed 輕松為網站開啟 HTTP/3 實踐前言實作安裝調試

七、然後就可以看到輸出了。

使用 LiteSpeed 輕松為網站開啟 HTTP/3 實踐前言實作安裝調試

八、因為 HTTP/3 依賴于 UDP,而我們往往隻是會開啟 TCP 協定,是以我們還需要打開防火牆和安全組(沒有就忽略)的UDP 443 端口。

  1. 輕量版使用 Firewall 防火牆 在終端中運作:
firewall-cmd --zone=public --add-port=443/udp --permanent
firewall-cmd --reload            
  1. 面闆版在 防火牆 - 開放網絡端口 中,端口輸入

    443

    協定選擇

    UDP

    ,點選确定後點選重載。
使用 LiteSpeed 輕松為網站開啟 HTTP/3 實踐前言實作安裝調試

更詳細的防火牆設定教程請看:

防火牆設定
  1. 伺服器安全組以阿裡雲為例: 協定類型選擇

    自定義UDP

    ,端口範圍

    443/443

    ,授權對象

    0.0.0./0

使用 LiteSpeed 輕松為網站開啟 HTTP/3 實踐前言實作安裝調試

九、更詳細的 QUIC 設定,可以在 LiteSpeed 圖形化控制台中導航至 Configuare - Server - Tuning ,對 QUIC 進行配置,一般來說新手建議預設,打開

Enable QUIC

即可

使用 LiteSpeed 輕松為網站開啟 HTTP/3 實踐前言實作安裝調試

調試

截至發稿浏覽器僅有 Chrome 支援,Firefox 和 Safari 可能得等 HTTP/3 正式發稿後會獲得支援。

一、Chrome 浏覽器進入

chrome://flags/

也沒,将

Experimental QUIC protocol

設定 Enable 然後重新開機浏覽器。

使用 LiteSpeed 輕松為網站開啟 HTTP/3 實踐前言實作安裝調試

二、 打開網站,再打開開發者工具,在 Protocol 就可以看到了,HTTP/2 + QUIC 就是 HTTP/3:

使用 LiteSpeed 輕松為網站開啟 HTTP/3 實踐前言實作安裝調試

來自:

https://www.mf8.biz/use-http-3/