Nginx启用http2不生效,可以检查openssl版本是不是过低
查看当前openssl版本
openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013
查看完版本可知,当前版本是1.0.1的,版本过老,需要升级到1.0.2才可以支持http2协议
注意:只需要在编译nginx的时候指定1.0.2版本的openssl就可以了
平滑编译方法:
1、下载openssl1.0.2源码包
cd /usr/local/src/
wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
tar zxf openssl-1.0.2o.tar.gz
2、查看当前nginx编译安装时安装了哪些模块
nginx -V
nginx version: nginx/1.12.2
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module
3、增加--with-openssl=/usr/local/src/openssl-1.0.2o重新编译(注意:最后不需要执行make install)
cd /usr/local/src/
wget http://nginx.org/download/nginx-1.12.2.tar.gz
tar zxf nginx-1.12.2.tar.gz
cd /usr/local/src/nginx-1.12.2
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_sub_module --with-http_realip_module --with-openssl=/usr/local/src/openssl-1.0.2o
make
4、备份源文件并替换nginx的二进制文件
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
cp objs/nginx /usr/local/nginx/sbin/nginx