概要

HTTP/2(還被稱之為 HTTP/2.0 和 HTTP 2.0)是萬維網使用的 HTTP 網路通訊協定的第二大版本。2015 年 5 月獲准創建 HTTP/2 以解決 HTTP 1.1 存在的某些重大性能問題。可進入 此處 瞭解該協議的優勢。目前大部分主流 web 瀏覽器都支援 HTTP/2。

自 12.5.30 Update #28 版本起,Plesk 客戶則可以使用 HTTP/2,該支援需要 nginx 最新版本。

備註: HTTP/2 只支援 SSL 網站,非 SSL 網站將繼續在 HTTP/1.x 協定下運行。

如何為您的網站啟用 HTTP/2 支援

請務必更新 NGINX web 伺服器到最新版本且運行該版本。實現方式是進入 工具與設定 -> 伺服器元件工具與設定 -> 服務管理 頁面進行操作。

image 76462

image 76463

root 身份通過 SSH 登入到伺服器並使用以下命令列工具在 Plesk 中啟用 HTTP/2:

# plesk bin http2_pref enable

最後一個步驟過程中,您的 NGINX web 伺服器將會轉向使用 TLS 協定和現代的安全密碼,整個 web 伺服器配置將會被重建,而有 『SSL 支援』 的所有用戶端網站都將移向使用 HTTP/2。

在切換到 HTTP/2 的過程中請檢查命令輸出查找錯誤或警告。如果有任何問題,請參閱 故障排除 小節。

備註: 您可以使用如 https://tools.keycdn.com/http2-test 的線上服務檢查是否已在某個域名上啟用了 HTTP/2 支援。

如果您想要返回 HTTP 1.x 而禁用 HTTP/2,請使用以下命令:

# plesk bin http2_pref disable

ALPN 支援

為了在 Google Chrome 中正確使用 HTTP/2,nginx web 伺服器必須支援 ALPN (Application-Layer Protocol Negotiation)。詳情請參閱 ALPN 文檔

nginx web 伺服器的 ALPN 支援在以下作業系統中的 Plesk 中可用。CentOS 7, RedHat Enterprise Linux 7, Ubuntu 14.04, Ubuntu 16.04, Debian 8.

也就是說 Plesk 支援的 HTTP/2 可在提及的作業系統上于所有現代瀏覽器中運行。

故障排除

如果您在為某個網站啟用 HTTP/2 支援時遇到問題,或通過 https://tools.keycdn.com/http2-test 檢查站點的結果中顯示只啟用了 HTTP 1.x 協定,請根據以下步驟進行故障排除。

  1. 請務必在域名的 主機設定 部分啟用 SSL 支援。HTTP/2 只支援 SSL 網站,非 SSL 網站將繼續在 HTTP/1.x 協定下運行。這對於 NGINX web 伺服器和 web 瀏覽器來說無疑是一種限制。

  2. 檢查是否啟用 nginx:

    # plesk sbin nginxmng -s
    

    必要時請啟用:

    # plesk sbin nginxmng -e
    
  3. 檢查 OpenSSL 包是否有 1.0.1 或更新版本。

    # rpm -qa | grep openssl
    openssl-1.0.1e-42.el6_7.4.x86_64.
    
  4. 檢查 /usr/local/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php 確定沒有自訂配置範本。如果有找到請移除,並重新創建設定檔:

    # plesk sbin httpdmng --reconfigure-all
    

    另外,如果您不想移除自訂設定,您可以如下修改檔 /usr/local/psa/admin/conf/templates/custom/domain/nginxDomainVirtualHost.php

    找到類似下面的幾行

    ($OPT['default'] ? ' default_server' : '') . ($OPT['ssl'] ? ' ssl' : '') ?>;
    

    使用下面兩行進行替換:

    ($OPT['default'] ? ' default_server' : '') . ($OPT['ssl'] ? ' ssl' : '') .
    ($OPT['ssl'] && $VAR->domain->physicalHosting->proxySettings['nginxHttp2'] ? ' http2' : '') ?>;
    

    然後運行命令:

    # plesk bin http2_pref enable
    
  5. 如果已啟用的 HTTP/2 有 ssl 連接問題,請確保 ssl_ciphers 指令(在 /etc/nginx/conf.d/ssl.conf 或在自訂的 nginxDomainVirtualHost.php 檔中) 有以下值:

    ssl_ciphers EECDH+AESGCM+AES128:EECDH+AESGCM+AES256:EECDH+CHACHA20:EDH+AESGCM+AES128:EDH+AESGCM+AES256:EDH+CHACHA20:EECDH+SHA256+AES128:EECDH+SHA384+AES256:EDH+SHA256+AES128:EDH+SHA256+AES256:EECDH+SHA1+AES128:EECDH+SHA1+AES256:EDH+SHA1+AES128:EDH+SHA1+AES256:EECDH+HIGH:EDH+HIGH:AESGCM+AES128:AESGCM+AES256:CHACHA20:SHA256+AES128:SHA256+AES256:SHA1+AES128:SHA1+AES256:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!KRB5:!aECDH:!EDH+3DES;
    
  6. 如果啟用了 HTTP/2 後網站無法在某些瀏覽器中運行,可能的原因是沒有 HTTP/2 必需的密碼和協定。在啟用 HTTP/2 後使用來自 Plesk 的 sslmng 工具設定可用的協定和 TLS 密碼清單。例如,如果您想要使用與 Plesk 使用的相同的密碼,可執行以下命令:

    #plesk sbin sslmng --services=nginx --custom --ciphers="EECDH+AESGCM+AES128:EECDH+AESGCM+AES256:EECDH+CHACHA20:EDH+AESGCM+AES128:EDH+AESGCM+AES256:EDH+CHACHA20" --protocols="TLSv1 TLSv1.1 TLSv1.2"
    

    配置將會存儲在 /etc/nginx/conf.d/ssl.conf 文件中。我們不建議手動編輯該檔。

  7. 如果上面的步驟沒有幫助,請聯繫 Plesk 技術支援