如何使用Nginx Web服務器在Debian 8上啟用HTTP2

更新資料:由於網絡瀏覽器放棄了對NPN(下一協議協商)的支持,因此以下描述的方法變得無用。 這是最新的工作方法。

您可能已經知道,HTTP2是HTTP / 1.1協議的最新更新。 據說HTTP2可以顯着加快網頁訪問速度,因為它能夠像在單個TCP連接上一樣發送與瀏覽器一樣多的HTTP請求。

HTTP2基於SPDY。 本教程展示了如何在Debian 8服務器上使用Nginx啟用HTTP2並解釋一些Nginx知識。 有關為何HTTP2比HTTP / 1.1更快的原因的詳細說明,請查看以下文章。

什麼是SPDY和HTTP / 2

如果您只想知道如何啟用HTTP2,則可以跳過它並閱讀以下文本。

在Debian 8 Jessie上安裝最新版本的Nginx

Nginx僅在1.9.5版之後支持HTTP2。 Debian 8存儲庫具有Nginx 1.6.2。 我們可以從Nginx官方存儲庫中安裝最新版本。

Nginx有兩個分支:nginx穩定版和nginx主線。 顧名思義,nginx stable是較穩定的版本,而較老的版本是nginx mainline,是較新的版本。 這並不一定意味着nginx主線是不穩定的。 實際上,如果您沒有充分的理由使用較早版本,nginx.org建議使用nginx主線。

要在Debian 8上安裝Nginx主線,首先我們需要獲取Nginx GPG公鑰。

wget http://nginx.org/keys/nginx_signing.key

然後使用以下命令將密鑰導入Debian 8:

sudo apt-key add nginx_signing.key

在那之後 /etc/apt/sources.list 文件。

sudo nano /etc/apt/sources.list

在文件末尾添加以下兩行。

deb http://nginx.org/packages/mainline/debian/ jessie nginx
deb-src http://nginx.org/packages/mainline/debian/ jessie nginx

按Ctrl + O保存文件,然後按Ctrl + X關閉nano文本編輯器。

在安裝過程中,Nginx將自動安裝新的配置文件。 因此,在安裝之前,您應該備份配置文件。 以下命令會將主配置文件和服務器塊配置文件複製到主目錄。

cp /etc/nginx/nginx.conf /etc/nginx/sites-available/*.conf /etc/nginx/conf.d/*.conf ~

如果您以前安裝過Nginx,請將其刪除:

sudo apt-get remove nginx nginx-common nginx-full nginx-core

現在更新本地包索引並安裝Nginx主線分支。

sudo apt-get update && sudo apt-get install nginx

安裝完成後,請檢查您的nginx版本。

[email protected]:~$ sudo nginx -v
nginx version: nginx/1.11.1

有關不同Nginx軟件包的一點說明

在Debian和Ubuntu上,您會發現 /etc/nginx/sites-available/etc/nginx/sites-enabled 目錄和一個 /var/www 目錄作為默認文檔根目錄。 這遵循Apache Web服務器的傳統。

但是,官方的Nginx軟件包集 /usr/share/nginx/html 作為默認文檔根目錄和服務器塊配置文件存儲在 /etc/nginx/conf.d/ 目錄。 RHEL,CentOS和Fedora遵循官方的方式。 要使用此目錄, http 本節在/etc/nginx/nginx.conf文件中需要以下指令。

include /etc/nginx/conf.d/*.conf;

Debian軟件包維護者認為,使用Apache方式啟用或禁用Nginx服務器塊更容易。 您只需要創建或刪除可用站點和啟用站點之間的符號鏈接。

但是我認為用 /etc/nginx/conf.d/。 要禁用Nginx服務器塊,您只需要確保文件不以結尾 .conf 延期。 例如:

sudo mv /etc/nginx/conf.d/example.conf /etc/nginx/conf.d/example.conf.save

重命名文件後,重新加載Nginx並禁用服務器塊。

sudo service nginx reload         or         sudo systemctl reload nginx

如果仍然需要可用的站點和啟用的站點,則可以手動創建它們。

sudo mkdir /etc/nginx/sites-avaiable /etc/nginx/sites-enabled

然後將以下行添加到 http 部分並重新加載Nginx。

include /etc/nginx/sites-enabled/*;

nginx http2

在sites-available目錄中創建服務器塊配置文件後,運行以下命令以創建符號鏈接,該符號鏈接將啟用服務器塊。

sudo ln -s /etc/nginx/sites-available/example.conf /etc/nginx/sites-enabled/example.conf

要禁用服務器塊,只需使用符號鏈接刪除 rm 命令:

sudo rm /etc/nginx/sites-enabled/example.conf

Nginx還是www-data?

另請注意,官方Nginx集 Nginx的 作為nginx用戶而不是 www數據。 您要確保php-fpm進程以同一用戶身份運行。 檢查php www池配置文件。 (我想您已經安裝了PHP7。)

sudo nano /etc/php/7.0/fpm/pool.d/www.conf

查找用戶名和組名。

user = www-data
group = www-data

您可以看到它以 www數據 用戶。 因此,您將需要配置Nginx作為www-data運行。

sudo nano /etc/nginx/nginx.conf

在此文件的頂部,將用戶從 Nginx的www數據

Nginx www數據

保存並關閉文件。 然後重新加載Nginx。

使用Nginx Web服務器啟用HTTP2

HTTP2規範本身不需要HTTPS。 但是,所有主要的Web瀏覽器(Firefox,Google Chrome,Edge等)僅支持帶有HTTPS站點的HTTP2。 因此,您需要獲取TLS / SSL證書。 多虧了“讓我們加密”,您現在可以輕鬆獲得免費證書。 查看以下教程。

在Debian 8 Server上使用Nginx安裝Let’s Encrypt免費的TLS / SSL證書

在站點上啟用HTTPS後,請編輯服務器塊配置文件。

sudo nano /etc/nginx/conf.d/example.conf

要麼

sudo nano /etc/nginx/sites-available/example.conf

要啟用HTTP2,您只需添加 http2 到listen指令的末尾。

更改

listen 443 ssl;

listen 443 ssl http2;

保存並關閉文件。 然後測試nginx的配置。

sudo nginx -t

如果測試成功,請重新加載Nginx

sudo service nginx reload        or          sudo systemctl reload nginx

您完成了。 很容易 !

如何檢查HTTP / 2是否在您的站點上正常工作

您可以選擇以下方法。

  • https://tools.keycdn.com/http2-test 並輸入您的域名。
  • 在Google Chrome和Firefox中安裝HTTP / 2和SPDY指示器擴展
Sidebar