还不升级http/2就跟不上时代了

升级http/2让你的网站访问起飞

Posted by hughnian on December 16, 2020

http/2起飞

第一次听到http/2这个词,是在一些技术社区里大佬闲暇谈资时提起的,当时以为是不是啥类似protobuf协议的东西,后来了解后发现是我想偏了😄。 http/2从字面上看也是和http协议相关的,只是http/1的升级版。http/2协议标准于2015年正式发布,该标准协议有Chrome, Opera, Firefox, Safari, Edge等主流大厂共同制定, 所以http/2的市场支持是相当可以的。截至2019年6月,全球有36.5%的网站都支持了http/2。为此还下了个chrome检测http/2的扩展,打开网站只要是支持了http/2这个小插件就亮了。 不装不知道,一装发现很多国内网站都支持了http/2。

那么这么多网站都支持,我也要尝试下了,不然感觉就不时髦了。

由于我的大部分服务器都是采用的nginx,这里就说一下通过nginx升级到http/2。
首先nginx支持http/2的话最低配需要的是1.10.0和openssl的1.0.2版本,同时http/2在实现上只支持https。 也就是说你想http/2起飞的话,需要满足三个条件,

  • 1.nginx版本大于等于1.10.0
  • 2.openssl版本大于等于1.0.2
  • 3.需要支持https,有https证书

我有https证书,这点满足了,然后是我nginx -V打印了下看看我的nginx版本,版本也同样满足了,我笑了,这么顺利!! 但是没想到有另外的问题,也是我之前在编译nginx时没想到的,就是你在编译nginx时需要带上http/2的模块,--with-http_v2_module,不然nginx也是没法支持的。
事到如此只能是重新编译nginx了,从nginx官网下载重新的源码包,解压后配置编译,
./configure后面的配置可以根据自己的nginx -V看到原来的配置继续配上,然后再加上最重要的配置--with-http_v2_module
这样配置完,编译后的nginx就可以支持http/2了。

下面就是配置你需要支持http/2的站点了,找到你网站的配置文件/usrl/local/nginx/conf/vhost/xxx.conf,在listen处加上http2就OK了。具体像这样,

改变前:listen 443 ssl;

改变后:listen 443 ssl http2;

最后我们需要需要重启nginx,是真的重启,需要stop再start。或者你也可以kill -9 xxx暴力的方式。

最后的效果就是这样了

感觉上是快了不少的。

http/2的优势

  • 多路复用,用同一个连接传输多个资源,比如以前你经常用的合并压缩js,css的方式,以及把很多小图变成一张大图。这些在http/2里直接不需要了,都帮你处理好了。
  • Server Push,http2可以让服务先把其它很可能客户端会请求的资源先push发给你,不用等到请求的时候再发送,这样可以提高页面整体的加载速度。
  • 报文头压缩和二进制编码,意思就是优化客户端的发送请求,过滤重复报文,减少发送量提高发送速度,而且节省了流量。