首頁  >  文章  >  運維  >  如何使用Nginx實現HTTP/2協定支持

如何使用Nginx實現HTTP/2協定支持

WBOY
WBOY原創
2023-08-03 17:40:531530瀏覽

如何使用Nginx實作HTTP/2協定支援

概述:
HTTP/2是一種新一代的HTTP協定,相較於之前的HTTP/1.x協定,它在效能和效率上有了很大的提升。為了支援HTTP/2協議,我們可以使用Nginx作為HTTP伺服器,並配置對應的設定。

安裝和設定Nginx:
首先,我們需要安裝Nginx。可以透過以下命令在Ubuntu系統中進行安裝:

sudo apt-get update
sudo apt-get install nginx

安裝完成後,我們需要設定Nginx以支援HTTP/2協定。開啟Nginx的設定文件,可以在以下位置找到:

sudo nano /etc/nginx/nginx.conf

找到server區塊中的listen指令,並新增http2作為參數,如下所示:

server {
    listen 443 ssl http2;
    ...
}

注意,這裡假設您的網站使用了SSL憑證且使用預設的443連接埠。如果您的網站沒有啟用SSL或使用不同的端口,請相應地調整配置。

儲存並關閉檔案後,重新啟動Nginx以使變更生效:

sudo systemctl restart nginx

設定SSL憑證:
為了使用HTTP/2協議,我們需要設定SSL憑證。在此範例中,我們將使用自簽名憑證。在生產環境中,應使用受信任的憑證授權單位所簽署的憑證。

首先,建立一個用於儲存SSL憑證的目錄:

sudo mkdir /etc/nginx/ssl

然後,產生私鑰和憑證要求:

sudo openssl req -new -newkey rsa:2048 -nodes -keyout /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.csr

按照提示進行相關資訊的填寫,例如國家碼、組織名稱等。

接下來,自簽章憑證:

sudo openssl x509 -req -days 365 -in /etc/nginx/ssl/nginx.csr -signkey /etc/nginx/ssl/nginx.key -out /etc/nginx/ssl/nginx.crt

設定Nginx以使用SSL憑證。開啟Nginx的設定文件,並找到以下行:

server {
    ...
    # SSL configuration
    #
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server;
    ...
}

取消註解listen指令,同時新增SSL憑證的路徑和私密金鑰的路徑:

server {
    ...
    # SSL configuration
    #
    listen 443 ssl http2;
    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;
    ...
}

儲存並關閉文件後,重新啟動Nginx以使變更生效。

測試HTTP/2協定支援:
為了驗證是否成功啟用了HTTP/2協議,請開啟瀏覽器並造訪您的網站。在瀏覽器的開發者工具中,查看Network選項卡,可以看到請求的協定為HTTP/2。

程式碼範例:
以下是一個簡單的Nginx設定範例,其中包含了HTTP/2協定的支援:

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/nginx/ssl/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl/nginx.key;

    location / {
        root /var/www/html;
        index index.html;
    }
}

結論:
透過使用Nginx設定支援HTTP/ 2協議,我們能夠提升網站的效能和效率。透過遵循本文中的步驟,您可以在您的網站上輕鬆實現HTTP/2協議的支援。

以上就是如何使用Nginx實作HTTP/2協定支援的介紹和範例程式碼,希望對您有幫助!

以上是如何使用Nginx實現HTTP/2協定支持的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn