把你的网站升级成HTTP/2

浏览: 184 发布日期: 2017-08-31 分类: nginx

在开启http2的过程中,踩了很多的坑,同时也一一的解决了,在此分享给需要的朋友们。

开启http2的前提条件

关于openssl

使用http2前,需要确保服务器的openssl版本必须大于1.0.2,查看版本的命令:

openssl version

如果看到1.0.2,恭喜你,可以继续的进行下一步操作了,如果版本的是1.0.1,也有办法

  • 第一个办法是换操作系统,选择支持openssl 1.0.2的操作系统,可以参考如下表格

目前我选择云主机的操作系统时就是ubuntu 16.04这个版本

  • 第二种办法就是自己下载openssl的高版本,然后nginx编译时使用自己下载的openssl,这种方式操作起来比较复杂,具体请参考Jerry Qu的博客,里面的步骤和操作说明,我整理了一份脚本,操作起来更简单,亲测可用,详见:Github。通过这种方式,你会得到一个已经使用本地openssl 1.0.2版本的nginx,这样操作起来和上面方法的步骤是一致的。

你可能会问:我自己升级操作的openssl版本不就行了嘛,这种方法我也试过,行不通,通过上面命令看到的是1.0.2,但是nginx的各项参数都对,就是http2就是不起作用,所以各位还是参照上面两个解决办法吧。

让你域名成为HTTPS

要开启http2,你的域名就必须是https的,如果你的域名还不是,也没关系,我们可以免费的获取https的证书,而且是一键式的,非常简单,具体步骤如下:

  • 选择完之后,页面会自己跳转到操作步骤页面,如下图

  • 接着,你就可以按照你看到的步骤敲命令即可

  • 如果你选择的是ubuntunginx的组合,你可以使用我整理好的脚本,一键运行,需要请移步Github

遇到的问题

运行的时候你会遇到这样的问题:找不到域名,如下图

是因为你的nginx的配置文件中找不到你录入的域名,我们需要修改一个配置文件的域名。

  • 找到nginx的配置文件,使用nginx -V

  • 找到server对象,增加server_name为你的域名

  • 重启nginx,命令:sudo nginx -s reload

  • 再运行生成证书的命令,就会生成成功!

重启完之后,依然是http1.1

  • 经过以上步骤,你的nginx的配置文件,会多出来这样的4行代码:

你的和我主要区别就是ssl后面的http2,把这个加个,再次重启,即可看到效果!

看效果

怎么看你的网站是不是已经开启了http2了呢,我们两种办法来看

第一种:使用Charles

第二种:使用Chrome

访问:chrome://net-internals/#http2

在实施过程中,有问题的同学,欢迎在评论区留言!

返回顶部