我一直以為 我在設定檔裡加入http2 就會開啟http2
server {
listen 443 ssl http2;
結果我用 Chrome 內建的工具檢查
卻沒有啟動 HTTP/2
這才驚覺我的網站一直都沒有啟動HTTP/2
原來是 CentOS 內建的OpenSSL版本
沒有支援 ALPN
導致Chrome會自動切換成HTTP/1.1
# ./openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
但是用 yum update這就已經是最新版本
所以只好自己編譯新版OpenSSL了
Google了一下發現
1.0.2版本跟1.1.0以上都有支援ALPN
基本上應該選版本號變動最小的
版本號變動越大
有相依於OpenSSL的程式就越有崩潰的風險
所以選了最新的1.0.2l
過程不外乎就是
wget 下載 source
解壓縮
然後用autoconfig
再來make
make install
# wget https://www.openssl.org/source/openssl-1.0.2-latest.tar.gz
# tar zxvf openssl-1.0.2-latest.tar.gz
# cd openssl-1.0.2l
# ./config
# make
# make test
# make install
接下來就是要重新編譯nginx了
可以參考現有版本的nginx編譯參數
可以用
# nginx -V
獲得
在configure最後再加上
--with-openssl=/xxx/openssl-1.0.2l
–with-openssl=openssl原始碼位置 的參數
再重新make
make install
最後restart nginx就大功告成!
最後別忘記測試是否在Chrome上有開啟HTTP/2了