Linux中國

NGINX Plus 現在完全支持 HTTP/2

NGINX Plus 作為一個 HTTP/2 網關。它與支持 HTTP/2 的客戶端 Web 瀏覽器用 HTTP/2 通訊,而轉換 HTTP/2 請求給後端伺服器通信時使用 HTTP/1.x(或者 FastCGI, SCGI, uWSGI, 等等. – 取決於你目前正在使用的協議)。

向後兼容性

在一段時間內,你需要同時支持 HTTP/2 和 HTTP/1.x。在撰寫本文時,超過50%的用戶使用的 Web 瀏覽器已經支持 HTTP/2,但這也意味著近50%的人還沒有使用。

為了同時支持 HTTP/1.x 和 HTTP/2,NGINX Plus 實現了 TLS 上的 Next Protocol Negotiation (NPN)擴展。當 Web 瀏覽器連接到伺服器時,其將所支持的協議列表發送到伺服器端。如果瀏覽器支持的協議列表中包括 h2 - 即 HTTP/2,NGINX Plus 將使用 HTTP/2 連接到瀏覽器。如果瀏覽器不支持 NPN 或在發送支持的協議列表中沒有 h2,NGINX Plus 將繼續回落到 HTTP/1.x。

轉向 HTTP/2

NGINX 公司會儘可能幫助大家無縫過渡到使用 HTTP/2。本節介紹了通過對你應用進行改變來啟用對 HTTP/2 支持,其中只需對 NGINX Plus 配置進行幾個變化。

前提條件

使用 nginx‑plus‑http2 軟體包升級到 NGINX Plus R7。注意現在還沒有支持 HTTP/2 版本的 nginx‑plus‑extras 軟體包。

重定向所有流量到 SSL/TLS

如果你的應用尚未使用 SSL/TLS 加密,現在啟用它正是一個好的時機。加密你的應用程序可以保護你免受間諜以及來自其他中間人的攻擊。一些搜索引擎甚至在搜索結果中對加密站點提高排名。下面的配置塊重定向所有的普通 HTTP 請求到該網站的加密版本。

server {
    listen 80;
    location / {
        return 301 https://$host$request_uri;
    }
}

啟用 HTTP/2

要啟用對 HTTP/2 的支持,只需將 http2 參數添加到所有的 listen 指令中,也要包括 SSL 參數,因為瀏覽器不支持不加密的 HTTP/2 請求。

server {
    listen 443 ssl http2 default_server;

    ssl_certificate     server.crt;
    ssl_certificate_key server.key;
    …
}

如果有必要,重啟 NGINX Plus,例如通過運行 nginx -s reload 命令。要驗證 HTTP/2 是否正常工作,你可以在 Google ChromeFirefox 中使用 「HTTP/2 and SPDY indicator」 插件來檢查。

注意事項

  • 在安裝 nginx‑plus‑http2 包之前, 你必須刪除配置文件中所有 listen 指令後的 SPDY 參數(使用 http2 和 ssl 參數來替換它以啟用對 HTTP/2 的支持)。使用這個包後,如果 listen 指令後有 spdy 參數,NGINX Plus 將無法啟動。
  • 如果你在 NGINX Plus 前端使用了 Web 應用防火牆(WAF),請確保它能夠解析 HTTP/2,或者把它移到 NGINX Plus 後面。
  • 此版本不支持在 HTTP/2 RFC 中定義的 「Server Push」 特性。 NGINX Plus 以後的版本可能會支持它。
  • NGINX Plus R7 同時支持 SPDY 和 HTTP/2(LCTT 譯註:但是你只能同時使用其中一種)。在以後的版本中,我們將棄用對 SPDY 的支持。谷歌在2016年初將 棄用 SPDY,因此同時支持這兩種協議也非必要。
  • 如果 ssl_prefer_server_ciphers 設置為 on 或者使用了定義在 Appendix A: TLS 1.2 Ciper Suite Black List 中的 ssl_ciphers 列表時,瀏覽器會出現 handshake-errors 而無法正常工作。詳細內容請參閱 section 9.2.2 of the HTTP/2 RFC

特別感謝

NGINX 公司要感謝 DropboxAutomattic,他們是我們軟體的重度使用者,並幫助我們實現 HTTP/2。他們的貢獻幫助我們加速完成這個軟體,我們希望你也能支持他們。

via: https://www.nginx.com/blog/http2-r7/

作者:Faisal Memon 譯者:strugglingyouth 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國