迎来真正http2.0的春天

  • A+
所属分类:技术分享 运维笔记

以前博客有提到http2.0,反正就是很装逼的一些话,无非降低CPU,提高加载速度什么什么啦,但是博主发现 并没有使网站使用起来http2.0,以下简称H2!

开篇

以前都是直接在nginx的配置文件里写下http2,就认为浏览器打开就是使用的H2协议,但是经过后来谷歌chrome的调试,发现H2的网站并没有echo少年!

首先跑下分,H2的分数基本在A+

迎来真正http2.0的春天

然后看看是否真正的是H2协议

迎来真正http2.0的春天

可以看到h2了,说明已经正式启用 了!

方法篇

浏览器和服务端都支持 NPN 或 ALPN 协商,是用上 HTTP/2 的大前提

要支持H2,就必须让服务端支持ALPN

 

NPN(Next Protocol Negotiation,下一代协议协商),是一个 TLS 扩展,由 Google 在开发 SPDY协议时提出。随着 SPDY 被 HTTP/2 取代,NPN 也被修订为 ALPN(Application Layer Protocol Negotiation,应用层协议协商)。二者目标一致,但实现细节不一样,相互不兼容。以下是它们主要差别:

  • NPN 是服务端发送所支持的 HTTP 协议列表,由客户端选择;而 ALPN 是客户端发送所支持的 HTTP 协议列表,由服务端选择;

  • NPN 的协商结果是在 Change Cipher Spec 之后加密发送给服务端;而 ALPN 的协商结果是通过 Server Hello 明文发给客户端;

大部分 Web Server 都依赖 OpenSSL 库提供 HTTPS 服务,对于它们来说,是否支持 NPN 或 ALPN完全取决于使用的 OpenSSL 版本。通常,如果在编译时不特意指定 OpenSSL 目录,Web Server 会使用操作系统内置的 OpenSSL 库。

由于 OpenSSL 是系统基础库,大量其他软件都对它有依赖,如果直接升级系统自带的 OpenSSL,很容易引发各种问题。更为稳妥的做法是在编译 Web Server 时自己指定 OpenSSL 的位置。

在Nginx 编译步骤中,就通过 --with-openssl 指定了新版 OpenSSL 源码路径,这样编译出来的 Nginx 就会用上最新的 OpenSSL 库。

然后在配置文件中启用H2才会真正的像上面所说显示的是H2!所以以前博主用的假H2了~~

最后贴出一张chrome浏览器的协议

迎来真正http2.0的春天

好了,教程就这么多!大家赶紧编译玩玩,至于速度效率方面,不知是不是心理作用,的确很大提升,而且服务器也不那么吃力!

最后送一首歌

[hermit auto="1" loop="0" unexpand="0" fullheight="0"]netease_songlist#:34723470[/hermit]

 

david

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  1   博主  1

    • avatar totoro625 0

      然而你的歌却把你的https给破坏了,(网易的音乐明明可以支持https的),推荐另一个播放器https://github.com/liwanglin12/Hermit-X

        • avatar david Admin

          @totoro625 这个使用https的??我刚才还没发现https这个问题,谢谢提醒