安装http2

在安装openresty或者nginx的时候。默认是不会安装http2模块的。

所以我们用的还是http1.1。要想用http2,是需要自己安装的。

安装命令比较简单。

进入到对应的openresty的解压目录里面。

然后执行下面语句


./configure --prefix=/usr/local/openresty --with-http_v2_module
make
sudo make install

--prefix这个是安装后的文件路径。如果不需要的话,是放在默认的位置,即可执行文件和配置文件分开了。

如果您时间比较忙,可以省下下面这段文字。下面主要是讲下http的历史的。

为什么要安装http2?

Http的发展情史

初恋期(Http1.0)

刚开始之初,对于http,大家看到的都是好的,都是新的。

在当时,物质条件(硬件)极度缺乏的状态下。

能够保持最基本的温饱就谢天谢地了。

所以,在刚开始的时候,只要能传递信息。

至于好不好用,那都是后面的话题了。

热恋期(Http1.1)

经过一段时间的摸索。

大家感情迅速升温,碰上了国家的好政策。

改革开发的春风吹满了祖国的大地。

然后大量的商品(图片和视频)的涌入。

大量的热钱和商品的涌入,让HTTP的身体有点吃不消了。

HTTP1.1 的虚火

高延迟 — 队头阻塞

队头阻塞是指当顺序发送的请求序列中的一个请求因为某种原因被阻塞时,在后面排队的所有请求也一并被阻塞,会导致客户端迟迟收不到数据。

无状态 — 阻碍交互

无状态是指协议对于连接状态没有记忆能力。每一个连接都是一个新的连接。上一次请求验证了用户名密码,而下一次请求服务器并不知道它与上一条请求有何关联,换句话说就是掉登录态。

明文传输 — 不安全性

传输内容没有加密,中途可能被篡改和劫持。

不支持服务端推送

服务的推送即可以让服务端主动把资源文件推送给客户端。当然客户端也有权利选择是否接收。

求婚期(SPDY)

久病思良药。于是SPDY大神上场了。

SPDY何人也

SPDY 出身于名门正派:Google。

SPDY是Google在Http1.1的基础上,进行了优化改进:

  1. 降低延迟,针对HTTP高延迟的问题,SPDY优雅的采取了多路复用(multiplexing)。多路复用通过多个请求stream共享一个tcp连接的方式,解决了HOL blocking的问题,降低了延迟同时提高了带宽的利用率。

  2. 请求优先级。多路复用带来一个新的问题是,在连接共享的基础之上有可能会导致关键请求被阻塞。SPDY允许给每个request设置优先级,这样重要的请求就会优先得到响应。比如浏览器加载首页,首页的html内容应该优先展示,之后才是各种静态资源文件,脚本文件等加载,这样可以保证用户能第一时间看到网页内容。

  3. header压缩。前面提到HTTP1.x的header很多时候都是重复多余的。选择合适的压缩算法可以减小包的大小和数量。

  4. 基于HTTPS的加密协议传输,大大提高了传输数据的可靠性。

  5. 服务端推送

SPDY构成图:

婚姻期(Http2.0)

Http2.0基于SPDY,但是结婚的男人怎么能用未婚的标准来考核呢?

HTTP2.0和SPDY的区别:

  1. HTTP2.0 支持明文 HTTP 传输,而 SPDY 强制使用 HTTPS。

  2. HTTP2.0 消息头的压缩算法采用 HPACK ,而非 SPDY 采用的 DEFLATE

HTTP2.0和HTTP1.X相比的新特性

  • 新的二进制格式(Binary Format),HTTP1.x的解析是基于文本。基于文本协议的格式解析存在天然缺陷,文本的表现形式有多样性,要做到健壮性考虑的场景必然很多,二进制则不同,只认0和1的组合。基于这种考虑HTTP2.0的协议解析决定采用二进制格式,实现方便且健壮。

  • 多路复用(MultiPlexing),即连接共享,即每一个request都是是用作连接共享机制的。一个request对应一个id,这样一个连接上可以有多个request,每个连接的request可以随机的混杂在一起,接收方可以根据request的 id将request再归属到各自不同的服务端请求里面。

  • header压缩,如上文中所言,对前面提到过HTTP1.x的header带有大量信息,而且每次都要重复发送,HTTP2.0使用encoder来减少需要传输的header大小,通讯双方各自cache一份header fields表,既避免了重复header的传输,又减小了需要传输的大小。

  • 服务端推送(server push),同SPDY一样,HTTP2.0也具有server push功能。

HTTP2.0的升级改造

  • 前文说了HTTP2.0其实可以支持非HTTPS的,但是现在主流的浏览器像chrome,firefox表示还是只支持基于 TLS 部署的HTTP2.0协议,所以要想升级成HTTP2.0还是先升级HTTPS为好。

  • 当你的网站已经升级HTTPS之后,那么升级HTTP2.0就简单很多,如果你使用NGINX,只要在配置文件中启动相应的协议就可以了,可以参考NGINX白皮书,NGINX配置HTTP2.0官方指南 https://www.nginx.com/blog/nginx-1-9-5/。

  • 使用了HTTP2.0那么,原本的HTTP1.x怎么办,这个问题其实不用担心,HTTP2.0完全兼容HTTP1.x的语义,对于不支持HTTP2.0的浏览器,NGINX会自动向下兼容的。

在Nignx增加http2模块顺便聊聊HTTP的八卦相关推荐

  1. 增加无线模块传输距离的方法

    随着无线数据传输的发展,无线模块的应用也越来越广泛.无线模块广泛地应用于车辆监控.遥控.遥测.小型无线网络.无线抄表.门禁系统.小区传呼.工业数据采集系统.无线标签.身份识别.非接触RF智能卡.小型无 ...

  2. php ldap 模块,不重新编译为PHP增加LDAP模块的支持

    不重新编译为PHP增加LDAP模块的支持 2018-11-28 安装步骤 1.进入到php安装源码目录 root@vm-199:~/lnmp0.9# cd php-5.3.28root@vm-199: ...

  3. 增加spyder模块代码提示功能和spyder 代码自动补齐设置方式

    增加spyder模块代码提示功能 找到/home/pc314/anaconda3/envs/tensorflow/lib/python3.5/site-packages/spyder/utils/in ...

  4. php rewrite模块安装,Linux_Linux下Apache安装/增加mod_rewrite模块,如果你的服务器apache还没有安 - phpStudy...

    Linux下Apache安装/增加mod_rewrite模块 如果你的服务器apache还没有安装,那很简单,在编译apache时将mod_rewrite模块编译进去就可以,相关文档可以在http:/ ...

  5. node 加密解密模块_聊聊Node加密模块crypto加密原理的那些事

    crypto是node.js中实现加密和解密的模块 在node.js中,使用OpenSSL类库作为内部实现加密解密的手段 OpenSSL是一个经过严格测试的可靠的加密与解密算法的实现工具. 散列(哈希 ...

  6. 给golang增加websocket模块

    最近打算做一款类似腾讯<<脑力达人>>的h5游戏,之前打算用skynet来做,所以给skynet增加了websocket模块, https://github.com/Skycr ...

  7. python 内置模块 增加_模块的内置方法--Python提高班

    这期的话题有点简单, 整理下常见的模块内置方法 刚开始学Python的时候, 看到if __name__ == '__main__': main()就不明觉厉了, 一直好奇__name__这货到底是个 ...

  8. phpize增加php模块

    一,phpize的好处 什么时候我们要用phpize呢?我们在安装php时: './configure' '--prefix=/usr/local/php' '--with-mysql=/usr/lo ...

  9. 某狸子订单系统豪华版/商城/前台程序/会员模块/增加分销模块

    介绍: 阿狸子订单系统豪华版,也就是全功能旗舰版了,带PC前台模块+WAP手机版模块(和PC端自适应)+文章模块+用户分销模块,整合多个接口,支持二维码推广.这个没任何加密,全绿色版本 网盘下载地址: ...

最新文章

  1. Mac OS X的快捷键
  2. BGP的各种属性配置
  3. Hadoop和大数据:60款顶级开源工具
  4. Asp.net core使用IIS在windows上进行托管
  5. 聊聊身边的嵌入式,英语学习利器点读笔
  6. java 一对一的关系_与休眠一对一关系 - java
  7. android手机刷win10吗,无处不在!安卓手机能刷Win10系统了
  8. 《健康报》携手健康之路帮助医院医生免费搭建微官网
  9. 计算地球上两点的直线距离
  10. anr产生的原理如何避免(android)
  11. 黑马程序员 Python学习笔记之 程序执行原理(科普)
  12. 施乐7855维修手册中文版_GE苏伊士MK-2EPHARM EDI模块维修、清洗、注意事项
  13. 安卓中将Java文件转换成Dex文件
  14. 标题栏设置及自定义标题栏
  15. web前端入门到实战:CSS实现平行四边形布局效果
  16. 全国青少年编程等级考试python一级真题2020年6月(含题库答题软件账号)
  17. 计算机网络复习题第四章(标有课本知识点)
  18. codewars练习(5)backwardsPrime--提交失败-Execution Timed Out (12000 ms)
  19. 2022年驾驶员考试推土机司机多选题专项训练及答案
  20. MIMIC-iv数据库官方SQL查询语句标注和初步探索性分析(一)--多种疾病的收录的人数

热门文章

  1. php删除二维数组元素_php怎样删除二维数组中的元素
  2. windows编写bat脚本删除隐藏文件夹下的所有文件
  3. 虚拟机xp与Linux 【ping命令】
  4. n行Python代码系列:五行代码实现两个视频画中画播放
  5. 【Windows】Windows10家庭版永久关闭自动更新
  6. 面试题:25匹马最快3匹及扩展
  7. 【期末复习】技术经济学(南邮储成祥)
  8. Go语言之分支结构(十一)
  9. LCD液晶屏连接方式有哪些呢及各自优缺点是什么?
  10. 【综述】对话系统中的口语理解技术