BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

NGINX商业版添加对HTTP/2协议支持

| 作者 金灵杰 关注 2 他的粉丝 发布于 2015年9月23日. 估计阅读时间: 4 分钟 | QCon北京2018全面起航:开启与Netflix、微软、ThoughtWorks等公司的技术创新之路!

亲爱的读者:我们最近添加了一些个人消息定制功能,您只需选择感兴趣的技术主题,即可获取重要资讯的邮件和网页通知

日前,NGINX公司宣布,其最新发布的商业版(NGINX Plus R7)已经支持HTTP/2协议。

HTTP/2是目前最新的超文本传输协议标准,它在2015年2月17日通过,并于2015年5月以RFC 7540正式发表。相较于HTTP 1.1,HTTP/2提供了连接复用、HTTP头压缩、请求/响应管线化等技术,能够大大降低请求延时,同时增加了服务器推送能特性。目前,主流浏览器都已经支持HTTP/2协议,大部分浏览器只支持基于传输层安全协议(Transport Layer Security, TLS)的HTTP/2协议实现。

早在一个月前,NGINX为NGINX 1.9.0及以后版本提供了测试版补丁,实现对HTTP/2协议的支持。最近发布的NGINX商业版(NGINX Plus)已经对HTTP/2协议完整支持。对于现有站点,如果需要增加HTTP/2支持,对NGINX配置文件修改非常小,同时对客户端没有感知。

NGINX Plus R7可以同时兼容HTTP 1.1和HTTP/2,这样的实现可以针对不同客户端浏览器对HTTP协议的支持程度,自动选择最优的访问方式。

在上图架构中,NGINX Plus的地位相当于“HTTP/2网关”。在前端,NGINX Plus和客户端浏览器进行交互,如果客户端支持HTTP/2协议,则NGINX Plus就会使用HTTP/2协议。同时,NGINX Plus会通过HTTP 1.X协议和后端应用进行交互。这样,后段应用不需要进行修改,就支持了对外提供HTTP/2服务。对于只支持HTTP 1.X协议的客户端,NGINX Plus同样可以回退到HTTP 1.X协议,以提高兼容性。

由于NGINX Plus需要同时支持HTTP/2协议和HTTP 1.X协议,NGINX Plus使用传输层安全协议中的下一代协议协商(Next Protocol Negotiation,NPN)扩展。当浏览器连接到NGINX Plus并进行传输层协议协商的时候,会提供自己支持的协议类型。如果浏览器声明自己支持HTTP/2(提供的协议列表中包含h2),在后续的应用层协议传输中,NGINX Plus将使用HTTP/2协议。如果浏览器不支持HTTP/2,甚至不支持NPN的时候,NGINX Plus会降级到HTTP 1.X协议。

要在NGINX Plus中添加HTTP/2的支持,只需要在配置文件中进行简单的修改,即在listen命令中添加http2参数。需要注意的是,http2参数必须和ssl参数同时出现,和大多数浏览器实现一样,NGINX Plus中实现的HTTP/2协议,也是必须构建于传输层安全协议之上。一个简单的配置如下:

server {
    listen 443 ssl http2 default_server;
}

另外需要注意的是,NGINX Plus的HTTP/2模块移除了对SPDY协议的支持。因此NGINX无法同时支持HTTP/2协议和SPDY协议。不过,Google已经官方宣布将不再支持SPDY协议,并计划于2016年在Chrome中移除SPDY协议。


感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT