如何在Nginx中啟用HTTP2.0?


HTTP/2是HTTP協議的最新版本,旨在提高網站效能和安全性。Nginx是一個流行的Web伺服器,支援HTTP/2。如果您正在使用Nginx並希望為您的網站啟用HTTP/2,本文將指導您完成此過程。

步驟1:檢查Nginx版本

在啟用HTTP/2之前,您應該檢查系統上安裝的Nginx版本。為此,請執行以下命令:

nginx -v

此命令將顯示系統上安裝的Nginx版本。如果您擁有1.9.5或更高版本的Nginx,則可以啟用HTTP/2。如果您的Nginx版本早於1.9.5,則需要升級到較新版本。

步驟2:啟用SSL/TLS

要啟用HTTP/2,您必須首先在您的網站上啟用SSL/TLS。HTTP/2要求使用SSL/TLS加密,這在Web伺服器和客戶端瀏覽器之間提供安全連線。

要啟用SSL/TLS,您需要一個SSL/TLS證書。您可以從受信任的證書頒發機構 (CA) 獲取證書,也可以為測試目的建立自簽名證書。

假設您擁有SSL/TLS證書,您可以將以下幾行新增到您的Nginx配置檔案中:

server {
   listen 443 ssl http2;
   server_name example.com;
   ssl_certificate /path/to/ssl/certificate;
   ssl_certificate_key /path/to/ssl/private/key;
   ...
}

此配置告訴Nginx使用SSL/TLS和HTTP/2監聽埠443(預設HTTPS埠)。`ssl_certificate`和`ssl_certificate_key`指令分別指定SSL/TLS證書和私鑰的路徑。請將example.com替換為您的域名。

步驟3:測試配置並重新啟動Nginx

更新Nginx配置檔案後,您應該測試配置以確保沒有錯誤。為此,請執行以下命令:

nginx -t

如果配置有效,您應該看到一條訊息指示語法正確並且測試成功。

最後,重新啟動Nginx以應用更改:

sudo service nginx restart

步驟4:驗證HTTP/2已啟用

要驗證您的網站上是否啟用了HTTP/2,您可以使用瀏覽器開發者工具,例如Google Chrome DevTools。開啟DevTools,轉到“網路”選項卡,然後載入您網站上的頁面。在“協議”列中,您應該看到“h2”而不是“http/1.1”,這表明頁面正在使用HTTP/2載入。

除了上述步驟外,在Nginx中啟用HTTP/2時,還有一些其他事項需要注意:

為所有伺服器塊啟用HTTP/2

如果您的Nginx配置檔案中有多個伺服器塊,您應該為所有伺服器塊啟用HTTP/2,以確保您的整個網站都能從HTTP/2的效能改進中受益。為此,只需將`http2`引數新增到每個伺服器塊的`listen`指令中即可。

最佳化您的網站以適應HTTP/2

雖然HTTP/2比HTTP/1.1提供了許多效能優勢,但需要注意的是,並非所有網站都能看到相同的改進。為了充分利用HTTP/2,您應該透過以下方式最佳化您的網站以適應新協議:

  • 最大限度地減少載入頁面所需的請求數量

  • 減小資源(例如影像、CSS和JavaScript檔案)的大小

  • 使用伺服器推送預載入後續頁面所需的資源

  • 為所有資源啟用gzip壓縮

  • 使用內容分發網路 (CDN) 來快取和提供靜態資源

  • 監控您的網站效能

啟用HTTP/2後,務必監控網站的效能,以確保它確實受益於新協議。您可以使用Google PageSpeed Insights、WebPageTest或Pingdom等工具來衡量網站的載入速度並找出任何需要改進的地方。

考慮使用第三方HTTP/2加速服務

如果您使用的是共享主機環境或無法控制伺服器配置,您可以考慮使用Cloudflare或Akamai等第三方HTTP/2加速服務。這些服務可以透過最佳化資源、減少延遲和提供額外的安全功能來加速您的網站效能。

使用最新版本的OpenSSL

Nginx依賴於OpenSSL進行SSL/TLS加密和HTTP/2支援。為了獲得最佳效能和安全性,請確保您使用的是最新版本的OpenSSL。您可以透過執行以下命令來檢查您的OpenSSL版本:

openssl version

如果您有舊版本的OpenSSL,您可以使用您的包管理器或透過從原始碼編譯來升級它。

使用HTTP/2伺服器推送功能

HTTP/2包含一項稱為伺服器推送的新功能,允許伺服器在客戶端請求之前向客戶端傳送其他資源。這可以顯著減少載入頁面所需的往返次數,並提高效能。要在Nginx中啟用伺服器推送,您可以使用`http2_push`指令。例如,要推送URL為`/styles.css`的CSS檔案,您可以將以下行新增到您的Nginx配置檔案中:

http2_push /styles.css;

監控伺服器的資源使用情況

啟用HTTP/2可能會增加伺服器的資源使用量,尤其是在高流量網站的情況下。請確保監控伺服器的CPU、記憶體和網路使用情況,以確保它能夠處理增加的負載。您可以使用top、htop或sar等工具來監控伺服器的資源使用情況。

僅為靜態內容啟用HTTP/2

為動態內容(如PHP指令碼或資料庫查詢)啟用HTTP/2可能不會帶來明顯的效能優勢。為了最大限度地提高HTTP/2的效能優勢,您應該只為靜態內容(如影像、CSS和JavaScript檔案)啟用它。您可以使用Nginx配置檔案中的`map`指令根據請求URL有選擇地啟用HTTP/2。例如,要為副檔名為.css的檔案請求啟用HTTP/2,您可以將以下幾行新增到您的配置檔案中:

map $request_uri $http2_enabled {
   ~*\.css$ 1;
   default 0;
}

server {
   listen 443 ssl http2;
   ...
   if ($http2_enabled) {
      http2_push /styles.css;
   }
   ...
}

在Nginx中啟用HTTP/2可以為您的網站提供顯著的效能優勢。但是,務必針對新協議最佳化您的網站,監控伺服器的資源使用情況,並僅為靜態內容有選擇地啟用HTTP/2。透過遵循這些技巧,您可以確保您的網站為訪問者提供快速安全的使用者體驗。

在所有支援的瀏覽器上啟用HTTP/2

雖然大多數現代Web瀏覽器都支援HTTP/2,但一些舊的瀏覽器不支援新協議。為了確保您的網站對所有訪問者都可用,您應該只為支援它的瀏覽器啟用HTTP/2。您可以使用Nginx配置檔案中的`if`指令檢測客戶端的瀏覽器,並且只有在支援的情況下才啟用HTTP/2。例如,要僅為Google Chrome和Mozilla Firefox啟用HTTP/2,您可以將以下幾行新增到您的配置檔案中:

map $http_user_agent $http2_enabled {
   default 0;
   ~*Chrome|Firefox 1;
}

server {
   listen 443 ssl;
   if ($http2_enabled) {
      listen 443 ssl http2;
   }
   ...
}

啟用伺服器端快取

HTTP/2可以顯著減少載入頁面所需的請求數量,但它並沒有消除快取的必要性。透過啟用伺服器端快取,您可以減少伺服器的負載並進一步提高效能。您可以使用Nginx配置檔案中的`proxy_cache`指令來為動態內容啟用快取。例如,要為副檔名為.php的檔案請求啟用快取,您可以將以下幾行新增到您的配置檔案中:

server {
   ...
   location ~ \.php$ {
      proxy_cache_valid 200 5m;
      ...
   }
   ...
}

結論

在Nginx中啟用HTTP/2是一個簡單的過程。您需要檢查您的Nginx版本,啟用SSL/TLS,更新您的Nginx配置檔案,測試配置並重新啟動Nginx。啟用HTTP/2後,您的網站將受益於更快的頁面載入時間、更高的效能和更好的安全性。

更新於:2023年5月15日

25K+瀏覽量

開啟你的職業生涯

完成課程並獲得認證

開始學習
廣告