nginx重新编译升级至http 2.0

在网络监听日益泛滥,劫持广告日益猖獗的今天,网站 https 可以算作标配。传闻明年开始,谷歌对没有上SSL的网站将会全部标记为不安全。所以各位没有加证书的伙伴赶紧加上咯。

而我今天要说的 HTTP 2.0 不是常见的 https ,而是下一代 HTTP 协议。改进主要在于单连接多资源的方式,减少服务端的链接压力,内存占用更少,连接吞吐量更大。并且 TCP 连接的减少而使网络拥塞状况得以改善,同时慢启动时间的减少,使拥塞和丢包恢复速度更快。总之就是跟上时代,进一步提高网站性能的好东西。

做一下折腾记录,也算是分享点经验。

注意: VPS 主机系统环境千差万别,所以经验只能提供思路,但很多操作命令,程序安装位置、目录等仅供参考。不能照搬全做,否则难以成功。本站 VPS 采用的系统是 centos6.7 平台是 LNMP1.3 套包。网站引擎为 nginx/1.10.0 版本。

由于 HTTP 2.0 是强制网站必须采用 HTTPS 的,大部分 Web Server 都依赖 OpenSSL 库提供 HTTPS 服务,对于它们来说,是否支持 HTTP 2.0 除了取决于使用的 OpenSSL 版本,还有 Web Server 的版本。本站采用的引擎 nginx/1.10.0 是默认支持 HTTP 2.0 的,而 centos6.7 系统自带的 openssl 库版本是 1.0.1e 这是2013年的版本。 OpenSSL 1.0.2 才开始支持 ALPN ,这是用上 HTTP 2.0 的前提。所以想上 HTTP 2.0 就应该首先升级 openssl 库。

openssl 库跟很多系统服务有关,不好随便升级,想给网站上 HTTP 2.0 比较保险的方式是在其他位置安装新版 openssl 库,然后将作为 Web Server 的 nginx 使用新版 openssl 库重新编译,这样 nginx 就能使用新版 openssl 库。

之前折腾一直不成功,主要是陷入了 openssl 库版本的大坑中,我一直尝试用最新的 openssl 1.1.0c 版本,一直都报错。今天才无意中得知 openssl 1.1.0 对很多接口做了更改,不一定适用。退回 openssl 1.0.2j 版本之后,重新编译 nginx 才得以成功。

重新编译 nginx 需要找到源压缩包解压,进入对应目录操作的时候,请注意复制原有的参数,如果你的 nginx 是安装在/usr/local/ 目录之下,可以在主机上使用命令:/usr/local/nginx/sbin/nginx -V 查看当前当前配置参数。

在主机解压 nginx 源码包的目录下输入的 ./configure 后面,一定要复制原有参数。然后在参数后面加上一个参数: openssl 库插件以及对应的路径位置。比如我是将 openssl 1.0.2j 的源码压缩包解压在/usr/local/src/openssl-1.0.2 这个位置,那加上的参数就是 –with-openssl=/usr/local/src/openssl-1.0.2 。如果你是新版 nginx 的话,那对应的参数里边一定会有一个 –with-http_v2_module 以及 –with-http_ssl_module 这些你懂的,不懂我也没法细化解释了。

参数加完之后,回车,然后再输入 make 命令,再回车。然后不要安装,也就是禁止下一步 make install。这个时候在 nginx 的源码包当前位置,会有一个目录 objs ,将里边的 nginx 文件复制到 nginx 执行目录。

cp objs/nginx /usr/local/nginx/sbin/nginx (这里假设你原来的 nginx 的执行目录是/usr/local/nginx)

后面输入命令 service nginx restart 重启 nginx。如果你原本已经上 https 了,那即可通过 HTTP 2.0 访问网站了(没上的话,自己另外找证书,然后修改网站配置文件添加SSL,这里不赘述。)

如何查看网站是否采用 http 2.0 ?

1:chrome浏览器 下载插件:HTTP/2 and SPDY indicator 插件装上之后,访问网站显示蓝色闪电图标的就是网站当前使用了http 2.0 协议

2:firefox浏览器 下载插件 HTTP/2 and SPDY indicator 2.3 插件装上之后,访问网站显示蓝色闪电图标的就是网站当前使用了http 2.0 协议

其实还有更简单的,浏览器开发者工具栏里边,可以看到对应链接采用什么版本协议,当然这个有点麻烦,就不赘述。

觉得好可以点个赞!
(暂无人赞)
Loading...

《nginx重新编译升级至http 2.0》有11个想法

    1. 不谢,很快很多网站就会配备http 2.0了。论说,新事物,其实QQ邮箱已经用了,百度首页尚未启用!!

  1. 作者,请问一下,为什么我的开启http2.0之后图片上传不了,总是卡到100%,关闭http2.0就又可以上传了。网站环境是tengine2.2.1+php7.2
    站点https://www.vmgirls.com/

    1. 折腾这个是许久之前的事了,别说我对其他环境不熟悉!就连nginx环境怎么上http2.0都不记得了。不过nginx/1.10以上版本都默认会有配置

发表评论

电子邮件地址不会被公开。 必填项已用*标注