【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

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:003426

评论

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

少儿春晚表演

Tiger

28天写作

星环科技 TDH8.1.0:全新升级为用户带来极致体验

星环科技

大数据

编程谜题:提升你解决问题的训练场

华为云开发者联盟

Python 编程 编程语言 代码 编程谜题

恒源云(GPUSHARE)_云GPU服务器如何使用PyCharm?

恒源云

深度学习 gpu 算力加速

【分布式技术专题】「OSS中间件系列」Minio的Server端服务的架构和实战搭建

洛神灬殇

OSS Minio Minio 集群 12月日更 FS

为什么要做团建TB?(6/28)

赵新龙

28天写作

前端开发框架react 之UmiJS

@零度

大前端 React

云原生时代的"应用级"多云管理

北京好雨科技有限公司

云计算 Kubernetes 容器 多云管理

大数据开发之数据读取—Pandas vs Spark

@零度

大数据 spark pandas

Go语言学习查缺补漏ing Day3

恒生LIGHT云社区

Go 编程语言

企业如何做好员工安全意识提升

腾讯安全云鼎实验室

一文讲透数仓临时表的用法

华为云开发者联盟

数据库 sql Local GaussDB(DWS) 临时表

Python代码阅读(第67篇):获取列表中的去重后的元素

Felix

Python 编程 列表 阅读代码 Python初学者

Redis 很强,不懂使用规范就糟蹋了

码哥字节

redis Redis开发规范 签约计划第二季

Hadoop完全分布式安装部署

编程江湖

大数据 hadoop

Apache ShenYu源码阅读系列-注册中心实现原理之Http注册

子夜2104

QA进阶成长感悟录

homber

成长 内容合集 签约计划第二季

【讲坛实录】知识图谱的探索与应用

星环科技

知识图谱

TDengine在雷达台站运维管理系统中的落地实践

TDengine

数据库 tdengine 时序数据库

换个角度思考勒索攻击事件

华为云开发者联盟

漏洞 勒索 攻击 安全检测 蜜罐检测

开源机器学习数据库OpenMLDB贡献者计划全面启动

第四范式开发者社区

第四范式 开源社区 OpenMLDB 机器学习数据库 贡献者

服务端质量保证体系(一) 全流程规范管理

homber

服务端 流程 质量保证 签约计划第二季

使用Harbor作为Rainbond默认容器镜像仓库,扩展Rainbond镜像管理能力

北京好雨科技有限公司

Redis 核心知识点归纳总结,从根上理解 Redis

码哥字节

redis Redis 核心技术与实战 签约计划第二季

服务端质量保证体系(三) CI原子能力建设

homber

ci 服务端 质量保证 签约计划第二季

2021 China DevOpsDays演讲实录

homber

DevOps DevOpsDays 签约计划第二季

基于HTML、CSS和JS的年龄计算器

海拥(haiyong.site)

html 大前端 28天写作 签约计划第二季 12月日更

「Oracle」Oracle 数据库备份还原

恒生LIGHT云社区

数据库 oracle

Linux一学就会之Centos8软件包的管理和安装之yum管理软件包

学神来啦

Linux centos 运维 rpm yum

基于HTML、CSS、JS的小游戏/工具制作过程及完整源码

海拥(haiyong.site)

28天写作 内容合集 签约计划第二季 12月日更 技术专题合集

服务端质量保证体系(二) 流水线标准化建设

homber

服务端 CI/CD 流程 质量保证 签约计划第二季

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