在开启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
的证书,而且是一键式的,非常简单,具体步骤如下:
在下面选择你的操作系统和服务软件,如下图
选择完之后,页面会自己跳转到操作步骤页面,如下图
接着,你就可以按照你看到的步骤敲命令即可
如果你选择的是
ubuntu
和nginx
的组合,你可以使用我整理好的脚本,一键运行,需要请移步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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。