服务器运行环境lnmp,要想网站运行在http/2.0下,需要nginx>=1.9.5,openssl>=1.0.2,至于其他说明不再赘述。本服务器当前Nginx版本为1.12.2,而centos6(64位)自带的openssl版本为1.0.1,这个和网上很多其他人遇到的情况是一样的,所以要想启用必须升级openssl,具体操作过程如下:
1.下载openssl
首先去官网(https://www.openssl.org/source/)下载最新版本,当前最新是1.1.0g,并将压缩包下载并解压到lnmp的源码目录/root/lnmp/src
2.配置安装新版openssl
#进入openssl-1.1.0g源码包 # ./config --prefix=/usr/local/openssl -fPIC shared zlib-dynamic # make -j ${THREAD} && make install
3.更新openssl软连接
mv /usr/bin/openssl /usr/bin/openssl.bak mv /usr/include/openssl /usr/include/openssl.bak ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl ln -s /usr/local/openssl/include/openssl /usr/include/openssl echo “/usr/local/openssl/lib” >> /etc/ld.so.conf # 更新动态链接库 ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1 ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
以上就完成了openssl的更新,查询openssl 版本:
# openssl version OpenSSL 1.1.0g 2 Nov 2017
4.接着重新编译Nginx,将openssl编译到nginx模块里,具体可以参考之前写的平滑升级文章
# ./configure ${之前的参数} --with-http_v2_module --with-http_ssl_module --with-openssl=/root/lnmp/src/openssl-1.1.0g
nginx要想启用http/2.0,必须有http_v2_module,http_ssl_module这两个模块,因此编译的时候与openssl一同编译进nginx模块里。
5.检测方式
一种是可以依靠Chrome的插件HTTP/2 and SPDY indicator,当页面支持启用了http2,则会显示蓝色闪电,鼠标指向这个蓝色闪电会显示“HTTP/2-enable(h2)”,另外一个方式则是通过chrome的控制台,通过network选项卡,查看资源的协议(如果没有显示protocol,可以右键勾选),如果显示h2,则表示文件启用了http/2.0