HTTP/2 升级

http2目前已经发布了大半年,最近也已经将公司的服务器从http1.x升级到http2,现在将在研究和升级http2一些经验整理如下,以备不时之需。

http2是基于Google的spdy协议进行编写的,与spdy区别的地方在于他们cipher的协商方式的不同,http2是基于ALPN(Application Layer Protocol Negotiation),而spdy是基于NPN(Next Protocol Negotiation),alpn与npn最大的区别在于alpn是客户端提供ciphers,服务器会根据客户端提供的ciphers来决定使用哪一个ciphers,而NPN与之恰恰相反。由于客户端提供ciphers,服务端可以从客户端所提供的ciphers中挑选出来一个支持的,安全性比较高的ciphers。

http2和http1.x之间的区别在于,http2为二进制的传输协议,同时它的表现方式有点类似于tcp的长连接,在client与server建立连接的时候,只会建立一个连接,而且所有的数据都会通过这个连接进行传递,http2目前仅支持https,虽然在http2的rfc文档中提供了h2和h2c两种,但是各大厂目前却都只实现了h2,h2c虽然也可以在一些开源库中找到(如nghttp2),但是能用https还是用https吧,就酱。

http2升级准备

鉴于我们所使用的web服务器为nginx,对nginx作了比较多的了解,nginx1.9.5+即可支持http2,在编译nginx的时候,需要加上`--with-http_v2_module`,同时需要确认openssl的版本是要大于`1.0.2g`,这些信息可以通过`nginx -V`所打印出来的信息中得知。目前为止,nginx仍不支持http2的server push功能,其他的基础功能支持尚好。

更新nginx的配置文件中的ssl相关选项可以使用[mozilla][1]提供的ssl配置生成器所生成的文件,升级过程中,一些被废弃的ssl_ciphers如果在ssl握手的时候被选中,可能会出现协商失败的问题。因为http2数据传输前需要经历tcp连接,alpn协商,ssl协商,如果alpn协商的结果为h2,而ssl协商的cipher为http2的black list中的一员,浏览器就会死给你看,无法显示正确的内容。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值