天天看點

NGINX Plus 現在完全支援 HTTP/2

nginx plus 所實作的 http/2 協定可與現有的網站和應用程式進行無縫銜接。隻需要一點改變,不管使用者選擇什麼樣的浏覽器,nginx plus 都能為使用者同時提供 http/1.x 與http/2 的最佳體驗。

要支援 http/2 僅需通過可選的 nginx‑plus‑http2 軟體包。nginx‑plus 和 nginx‑plus‑extras 軟體包支援 spdy 協定,目前推薦用于生産站點,因為其被大多數浏覽器所支援并且代碼也是相當成熟了。

<a target="_blank"></a>

http/2 使資料傳輸更高效,對你的應用程式更安全。 http/2 相比于 http/1.x 有五個提高性能特點:

完全複用 – 在一個保持激活(keepalive)的連接配接上,http/1.1 強制按嚴格的順序來處理請求。一個請求必須在下一個請求開始前結束。 http/2 消除了這一要求,允許并行和亂序來處理請求。

單一,持久連接配接 – 由于 http/2 允許請求完全複用,是以可以通過單一連接配接并行下載下傳網頁上的所有對象。在 http/1.x 中,使用多個連接配接來并行下載下傳資源,進而導緻使用底層 tcp 協定效率很低。

二進制編碼 – header 資訊使用緊湊的二進制格式發送,而不是純文字格式,節省了傳輸位元組。

header 壓縮 – headers 使用專用的 hpack 壓縮算法來進行壓縮,這進一步降低資料通過網絡傳輸的位元組。

要了解更多關于 http/2:

我們的 http/2 實作是基于 spdy 支援的,它已經被廣泛部署(使用了 nginx 或 nginx plus 的網站近 75% 都使用了 spdy)。使用 nginx plus 部署 http/2 時,幾乎不會改變你應用程式的配置。本節将讨論 nginx plus如何實作對 http/2 的支援。

NGINX Plus 現在完全支援 HTTP/2

nginx plus 作為一個 http/2 網關。它與支援 http/2 的用戶端 web 浏覽器用 http/2 通訊,而轉換 http/2 請求給後端伺服器通信時使用 http/1.x(或者 fastcgi, scgi, uwsgi, 等等. – 取決于你目前正在使用的協定)。

NGINX Plus 現在完全支援 HTTP/2

為了同時支援 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。

nginx 公司會盡可能幫助大家無縫過渡到使用 http/2。本節介紹了通過對你應用進行改變來啟用對 http/2 支援,其中隻需對 nginx plus 配置進行幾個變化。

使用 nginx‑plus‑http2 軟體包更新到 nginx plus r7。注意現在還沒有支援 http/2 版本的nginx‑plus‑extras 軟體包。

<code>server {</code>

<code>listen 80;</code>

<code>location / {</code>

<code>return 301 https://$host$request_uri;</code>

<code>}</code>

<code>listen 443 ssl http2 default_server;</code>

<code></code>

<code>ssl_certificate server.crt;</code>

<code>ssl_certificate_key server.key;</code>

<code>…</code>

在安裝 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 以後的版本可能會支援它。

本文來自雲栖社群合作夥伴“linux中國”,原文釋出日期:2015-10-08

繼續閱讀