写点什么

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

  • 2015-09-22
  • 本文字数:1181 字

    阅读完需:约 4 分钟

日前,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 读者交流群)。

2015-09-22 19:003681

评论

发布
暂无评论
发现更多内容

读懂框架设计的灵魂—Java反射机制

Java 编程 架构

做一个很出色的程序员

四猿外

Java 程序员 面试 架构师 职场成长

面试腾讯T3,过关斩将直通3面,终斩获offer流下了激动的泪水(腾讯面经总结分享)

Java架构之路

Java 程序员 架构 面试 编程语言

话题讨论 | 你”节后综合症“了吗?

程序员架构进阶

话题讨论 28天写作 2月春节不断更 话题王者 节后焦虑

产品训练营第五周作业

产品经理训练营

开源微服务运行时 Dapr 发布 1.0 版本

阿里巴巴云原生

开源 容器 微服务 开发者 云原生

云算力系统开发|云算力APP软件开发

系统开发

OAtuth2.0 知多少

圣杰

oauth2.0 dotnet

使用 RxJS 设计实现一个下载中心功能

laoergege

大前端 RXJS

Protobuf源码解读之编解码

batman

protubuf zigzag varint

为了面试阿里巴巴、腾讯、字节跳动、京东、华为等大厂,我收集了8家大厂高频Java面试真题集锦(含答案)

Java架构之路

Java 程序员 架构 面试 编程语言

读书笔记-MySQL索引

yunCrush

2021最新总结:阿里/京东/饿了么/拼多多/爱奇艺面经分享(堪称Offer收割机)

比伯

Java 编程 架构 面试 计算机

助力文化荟萃,区块链或可打造“新”春晚?

CECBC

区块链 春晚

日记 2021年2月23日(周二)

Changing Lin

2月春节不断更

架构设计篇之微服务实战笔记(四)

小诚信驿站

架构师 刘晓成 小诚信驿站 28天写作 架构师成长笔记

智慧组工党务解决方案,智慧党建系统

13530558032

60K*17薪的面试题是什么样的,需要具备什么技术?首发“Java面试考点大全”

Java架构之路

Java 程序员 架构 面试 编程语言

农产品区块链溯源平台,区块链溯源方案

13530558032

最值得期待的Python进阶宝典《Effective Python》第2版中文版来咯!

华章IT

Python 代码整洁 Python编程 EffectivePython Python进阶

1月干货总结:EasyDL上线时序预测模型,文档翻译全新发布

百度大脑

从架构设计的演进来看,我们真的需要DDD

三石

DDD 软件架构 话题讨论

区块链电子合同应用平台,区块链存证系统

13530558032

快速搭建本土「Clubhouse」

anyRTC开发者

ios android WebRTC RTC 语音通话

LeetCode题解:322. 零钱兑换,动态规划,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

量化机器人APP开发|量化机器人软件系统开发

系统开发

话题讨论 | 技术从入门到熟练是怎样的?

happlyfox

话题讨论 28天写作

深入理解 Web 协议(三):HTTP 2

vivo互联网技术

Web HTTP HTTP2.0

jenkins Android 自动构建-扫码下载

三爻

第二次书摘的微信视频号直播复盘

小匚

用户体验

2021 iOS底层提升计划

iOS底层

NGINX商业版添加对HTTP/2协议支持_语言 & 开发_金灵杰_InfoQ精选文章