最近關(guān)注http2.0,然后想在在網(wǎng)站配置http2.0
如下是配置和遇到的問題
使用server是基于nginx得tengine
配置很簡單,但是如果直接如下操作
server {
listen 443 ssl http2;
這樣會提示nginx得http_v2_module沒有安裝,需要重新編譯安裝http2.0
那么接下來我找到源碼包重新編譯
[root@oeynet tengine-2.2.0]# make clean
make: *** No rule to make target `clean'. Stop.
[root@oeynet tengine-2.2.0]# ./configure --prefix=/server/programs/tengine2.2 --with-http_v2_module
重新編譯后運行,nginx運行成功,但是google得http檢測插件并沒有亮,也就是說明http2沒有生效。
在nginx官方有一篇文章鏈接
也就是說Chrome 在放棄了對 NPN 的支持,如果繼續(xù)在 Chrome 上支持 HTTP/2 ,則需要安裝最新 1.0.2 版的 OpenSSL,并且用 1.0.2 的 OpenSSL 重新編譯 Nginx。
最后下載openssl庫重新編譯
https://www.openssl.org/source/
[root@oeynet downloads]# wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
[root@oeynet downloads]# tar -zxf openssl-1.1.0e.tar.gz
[root@oeynet downloads]# ls
openssl-1.1.0e php-5.6.30 tengine-2.2.0
openssl-1.1.0e.tar.gz php5.6.tar.gz tengine-2.2.0.tar.gz
[root@oeynet downloads]# cd tengine-2.2.0
[root@oeynet tengine-2.2.0]# make clean
rm -rf Makefile objs
[root@oeynet tengine-2.2.0]# ./configure --prefix=/server/programs/tengine2.2 --with-http_v2_module --with-openssl=/server/downloads/openssl-1.1.0e
[root@oeynet tengine-2.2.0]# make && make install
在編譯過程中出錯,所以我降低了openssl版本到
https://www.openssl.org/source/openssl-1.0.2f.tar.gz
//注意這里的shared和zlib是必須的,否則編譯nginx會報錯
./config shared zlib
make && make install
mv /usr/bin/openssl /usr/bin/openssl.old
mv /usr/include/openssl /usr/include/openssl.old
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
//檢查版本
openssl version
[root@oeynet openssl-1.0.2j]# openssl version
OpenSSL 1.0.2j 26 Sep 2016
[root@oeynet openssl-1.0.2j]#
make clean
[root@oeynet tengine-2.2.0]# ./configure --prefix=/server/programs/tengine2.2 --with-http_v2_module --with-openssl=/server/download/openssl-1.0.2f
編譯安裝通過
重啟nginx http2協(xié)議應(yīng)用成功
nginx -s reload