1. 程式人生 > >Nginx 開始支援 HTTP/2 了

Nginx 開始支援 HTTP/2 了

提醒:本文最後更新於 1243 天前,文中所描述的資訊可能已發生改變,請謹慎使用。

在我之前的「開始使用 HTTP/2」這篇文章裡,我提到過:Nginx 到年底才會支援 HTTP/2,於是本部落格使用 H2O 這個 Web Server 提供 HTTP/2 服務。

8 月初,Nginx 官方部落格發了一篇文章:「Announcing an Early Alpha Patch for HTTP/2」,也就是說 Nginx 終於開始對 HTTP/2 提供早期(Early Alpha)支援了。對於我這種以折騰為主的個人部落格來說,沒有理由不嘗試一下。

注:從 Nginx 1.9.5 開始,http_v2_module 已經替換了 ngx_http_spdy_module,故本文 patch 這一步請直接跳過。另外,本文關於 Nginx 的安裝和配置不再更新,請檢視最新版:

本部落格 Nginx 配置之完整篇

Nginx 新增了 http_v2_module 模組用於提供 HTTP/2 服務,這個模組是以 Patch 形式提供。官方對此有三點說明:

  • 強烈不建議用於生產環境;
  • 現階段不支援 Server Push;
  • 這個 Patch 會替換之前的 SPDY 模組,也就是說應用 Patch 後不能再給站點配置 spdy;

介紹完基本資訊,下面簡單寫下如何讓 Nginx 支援 HTTP/2:

現階段的 HTTP/2 補丁需要 Nginx 1.9.0 以上的版本,建議直接去 Nginx 官網下載最新原始碼包(當前是 1.9.3),然後去 OpenSSLLibreSSL

(我用的是 LibreSSL)官網下載最新的 SSL 原始碼包並分別解壓。

接著,進入解壓好的 Nginx 原始碼目錄,下載並應用補丁:

cd nginx-1.9.3
wget http://nginx.org/patches/http2/patch.http2.txt
patch -p1 < patch.http2.txt

配置時,至少需要啟用 http_v2_module 和 http_ssl_module 這兩個模組:

./configure --with-openssl=../libressl-2.2.2 --with-http_v2_module --with-http_ssl_module

然後 makemake install 就搞定了。在 Nginx 配置中啟用站點對 HTTP/2 的支援也很方便,只需要在 listen 時加上 http2 就可以了,例如:

listen  443 ssl http2 fastopen=3 reuseport;

其他的配置之前的文章都寫過,這裡不重複了。另外,由於 HTTP/2 並不會使用 gzip 來壓縮頭部,之前用於 SPDY 的 spdy_headers_comp 配置已經不需要了,也就是說不會有類似於 http2_headers_comp 的配置。

經過一天的簡單試用,我發現 Nginx 這個 HTTP/2 補丁的穩定性還可以,所以先這樣用著,後續有什麼發現再補充。

Update @ 17/08:今天發現我的部落格在 firefox 下無法訪問(測試了 OSX 10.11 EI Capitan 和 Windows 10),具體表現為 TLS 握手階段連線被終止。其它瀏覽器都沒有問題,在 Nginx 配置中去掉對 HTTP/2 的支援也能讓 firefox 恢復正常。這個問題我暫時沒找到原因,我決定先回滾到 H2O 的版本,後續有進展再補充。經過驗證,是我的 SSL 加密方式配置問題,已經修復並切回 Nginx。

--EOF--

提醒:本文最後更新於 1243 天前,文中所描述的資訊可能已發生改變,請謹慎使用。

相關推薦

Nginx 開始支援 HTTP/2

提醒:本文最後更新於 1243 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 在我之前的「開始使用 HTTP/2」這篇文章裡,我提到過:Nginx 到年底才會支援 HTTP/2,於是本部落格使用 H2O 這個 Web Server 提供 HTTP/2 服務。 8 月初,Nginx 官方部落格發

Volley支援HTTP/2

volley暫時是不支援HTTP/2的,這是官方的解釋Does volley Support HTTP/2 不過volley設計的擴充套件性特別好,volley提供的介面HttpStack,可以自己去實現來支援HTTP/2。在Android上,從4.4以後系統就已經支援HTTP/2,但

開始使用 HTTP/2

提醒:本文最後更新於 1312 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 一直以來,我的部落格都在使用 Nginx。但它目前只支援到 SPDY/3.1,也不支援 Server Push,一直是我的一塊心病。Nginx 官方說今年年底會增加對 HTTP/2 的支援,還要等好久: We'

nginx完美支援thinkphp3.2.2

第一步:配置SERVER塊 server {         listen 80;         server_name www.domain.com domain.com;         error_page 404/404.html;         error_

2.Nginx學習-The HTTP Core module

nginx module http core module是Ngnix提供WEB服務的最核心模塊,默認被開啟。本篇文章將講述該模塊的一些配置配置文件結構:http { server {// virtual website location{ } }

HTTP/2 服務器推送(Server Push)教程(HTTP/2 協議的主要目的是提高網頁性能,配置Nginx和Apache)

tcp tac 面板 參考 寫入 修改 現實 多個 後端 HTTP/2 協議的主要目的是提高網頁性能。 頭信息(header)原來是直接傳輸文本,現在是壓縮後傳輸。原來是同一個 TCP 連接裏面,上一個回應(response)發送完了,服務器才能發送下一個,現在可以多個回

nginx做正向代理(Centos7,支援http和https)

預設的情況下,使用nginx做正向代理可以解析http請求, 對於諸如baidu.com這樣的https請求,nginx預設並不支援,不過我們可以藉助第三方模組來實現。   1、先說預設情況下的代理配置   配置方法如下: #user nobody

Android什麼版本開始支援藍芽4.2?答案:Android 7.0

轉自:https://blog.csdn.net/h_o_w_e/article/details/79874162 根據Android 7.0的相容性文件(https://source.android.com/compatibility/7.0/android-7.0-cdd.pdf) 裡面

談談 NginxHTTP/2 POST Bug

文章目錄 Bug 復現 產生原因 如何解決 提醒:本文最後更新於 774 天前,文中所描述的資訊可能已發生改變,請謹慎使用。 幾個月前,我發現在某些情況下,使用 Safari 無法登入我的部落格後臺。當時研究了一下,發現這是 Nginx 處理 HTTP/2 POST

Spark 2.3新版釋出,開始支援原生 Kubernetes_Kubernetes中文社群

開源社群越來越多人使用Kubernetes來進行資料處理、資料分析和處理機器學習計算,Kubernetes也增加了不少擴充功能,資源定製化、控制器定製化,以便對更深度整合這類專屬應用程式。 現在熱門的大資料分析平臺Spark在2.3新版中,開始原生支援Kubernetes。可以直接在一個現成K

Nginx支援http檔案上傳的配置

一. 相關模組安裝 檢視Nginx是否安裝了這兩個模組(nginx_upload_module和nginx_uploadprogress_module), 使用命令: $ nginx -V (注意是大寫),可以 檢視Nginx當時編譯時候的引數,如果發現有上述兩個模組,說明Nginx已經安裝了這兩個模組。 如

Nginx安裝配置,支援http以及https

一、Nginx安裝    如果yum安裝失敗,可從這個地方***下載相關rpm包,直接執行install.sh安裝即可二、配置http    修改配置檔案nginx.conf,安裝上邊的步驟安裝,應該是在/usr/local/webserver/nginx/conf這個目錄下

微軟ML.NET 0.5開始支援TensorFlow人工智慧模型

微軟在5月釋出由微軟研究院開發、發展了十年的機器學習框架ML.NET,今釋出了ML.NET 0.5,最大的更新便是開始支援TensorFlow,開發者可以在ML.NET中直接使用已經訓練好的TensorFlow模型,進行評分(Scoring)。另外,微軟正在開發新的ML.NET API,屆時將會棄用現行的Le

如何判斷網站是否使用HTTP/2

1. chrome://net-internals/#http2 在瀏覽器輸入chrome://net-internals/開啟網路觀察元件,然後選擇HTTP/2 2. chrome.loadTimes 這種方法更簡單,支援「Http2」的chrome

nginx配置將http請求轉發支援ssl雙向認證https請求的正向代理

一、引言 nginx 是否支援將http請求轉發為https支援ssl雙向認證,網上沒什麼用例可以參考,查詢各大開發運維社群了下有幾種說法 支援: 不支援: 不清楚家祭不忘告乃翁:

Nginx配置同一個域名同時支援http與https兩種方式訪問

server { listen 80; listen 443 ssl; ssl on; server_name 域名; index index.html index.htm index.php default.html default.htm default.php; ssl_certificate /usr

阿里雲(CentOS 7.2)+Nginx配置支援IPV6

這兩天IOS上架遇到一個問題,AppStore要求必須支援IPv6,這個問題令不少人腦仁疼,結合這兩天不斷的嘗試,現將配置過程總結如下,親測可用! 若要滿足AppStore要求應用支援IPV6需確

Java 9 和Spring Boot 2.0紛紛宣佈支援HTTP/2到底是什麼?

關於HTTP/2,最近你可能沒少聽到過他,首先,如果你瞭解過Java 9的特性,那麼你會發現在Java9中,提供了新的方式來處理HTTP呼叫,提供了新的HTTP Client,將替代HttpURLConnection,並提供對WebSocket和HTTP/2的支援。還有前兩天

Nginx實現HTTP/2——原理、實踐與資料分析

HTTP/2(Hypertext Transfer Protocol Version 2)無疑是下一代網際網路加速技術的基石與方向,自誕生以來經歷了00~17 共 18 版草案,目前,已經擁有了明確的RFC標準:RFC 7540和RFC 7541。 目前支援

從零開始構建支援TLS1.2的Web伺服器Linux版(二) 配置Tomcat環境

博文目錄 下載Tomcat安裝包 在下載安裝Tomcat前,請確保已經按 (一) 配置JAVA環境 正確安裝配置好Java環境。 根據自己的需要選擇合適的安裝包,官方下載