Nginx启用http2不生效,可以检查openssl版本是不是过低
查看当前openssl版本
1 |
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源码包
1 2 3 |
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编译安装时安装了哪些模块
1 |
nginx -V |
1 2 3 4 5 |
nginx version: nginx/1.12.2 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) built with OpenSSL 1.0.2k-fips TLS SNI support enabled 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)
1 2 3 4 5 6 |
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的二进制文件
1 2 |
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak cp objs/nginx /usr/local/nginx/sbin/nginx |
5、验证
1 |
nginx -V |
1 2 3 4 5 |
nginx version: nginx/1.12.2 built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) built with OpenSSL 1.0.2k-fips TLS SNI support enabled 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 --with-http_realip_module --with-openssl=/usr/local/src/openssl-1.0.2o |
此时访问网站,可以看到http2启用成功
查看网站是否启用http2协议方法:http://blog.whsir.com/post-2975.html
原文链接:Nginx启用http2不生效,转载请注明来源!