前幾天為了使自己的介面支援https,就想直接使用http/2.0,配置的過程中遇到一些小坑,寫個文章記錄一下,另外希望對剛開始配置的讀者一些幫助和參考。
明確我們的最終目標,也就是標題:給自己的nginx配置http/2,為了實現這個目標,並不是我們伺服器已經有nginx就可以了,你的nginx版本很有可能不符合http/2的要求。因為,nginx從1.9.5版本才開始預設支援http/2,並移除了SPDY
模組。
如果你是剛開始搭建伺服器環境,那麼很簡單,就直接安裝1.9.5之後的穩定版本nginx就好。為了文章的完整性,再簡單說一下nginx的安裝。
在安裝nginx之前,請確保安裝了g++
和gcc
(可用yum
進行安裝)。
先進入安裝目錄usr/local
,分別安裝openssl
、pcre
、zlib
。(請選擇最新穩定版本):
#下載:
$ wget http://www.openssl.org/source/openssl-1.1.0h.tar.gz
#解壓:
$ tar -zxvf openssl-1.1.0h.tar.gz
#進入原始碼目錄並配置:
$ cd openssl-1.1.0h
$ ./config --prefix=/usr/local/openssl --openssldir=/usr/local/openssl/conf
#編譯安裝
$ make && make install
#檢查安裝是否成功
$ /usr/local/openssl/bin/openssl version -a
用同樣的方法安裝好pcre
和zlib
。
上面三個安裝好之後,再進行nginx安裝,步驟類似:
#解壓
$ tar -zxvf nginx-1.8.0.tar.gz
#進入安裝目錄
$ cd nginx-1.8.0
#配置
$ ./configure
--user=www
--group=www
--prefix=/usr/local/nginx
--with-http_ssl_module
--with-http_v2_module
--with-openssl=/usr/local/openssl-1.1.0h
--with-pcre=/usr/local/pcre-8.37
--with-zlib=/usr/local/zlib-1.2.11
--with-http_stub_status_module
--with-threads
配置的時候要注意的地方有兩點:
一個是要對應好openssl、pcre、zlib的原始碼路徑和版本;
注意配置引數中的–with-http_v2_module,這是nginx1.9.5之後新增的模組,專門用來支援http/2。所以要想進行後面的http/2配置,這個引數絕對不能漏。
然後編譯安裝:
$ make && make install
啟動:
$ /usr/local/nginx/sbin/nginx
這樣你的nginx就基本搭建完成了。可以直接訪問公網IP或者你的域名檢視nginx預設歡迎頁。
下一節筆者將詳細講述如何使用letsencrypt配置http/2。