AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

评论

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

模块七作业

Geek_ec866b

架构训练营

数据库原理知识及SQL语言知识拓展

王小王-123

MySQL 数据库 MySQL 数据库 4月月更

每个互联网人才都应该知道的SQL注入!

喀拉峻

网络安全 安全 渗透测试 SQL注入

读《A Philosophy of Software Design》——(8)

术子米德

架构师成长笔记

声网的混沌工程实践

声网

测试 混沌工程 质量保障 Dev for Dev

读《A Philosophy of Software Design》——(9)

术子米德

架构师成长笔记

读《A Philosophy of Software Design》——(10)

术子米德

架构师成长笔记

区块链溯源!“有机”食品也要“有迹可循”

旺链科技

区块链 产业区块链 食品追溯

云原生小课堂|高性能、高可用、可扩展的MySQL集群如何组建?

York

云原生 MySQL 高可用 MySQL 数据库

Redis+Caffeine两级缓存,让访问速度纵享丝滑

Java工程师

Java 数据库 redis 架构 高性能

老项目改造返回值规范化

Rubble

4月日更

现代间谍技术的演变:从“王牌特工”到“行走的50w”

脑极体

[Day8]-[动态规划] 最长公共子序列

方勇(gopher)

LeetCode 动态规划 数据结构与算法、

读《A Philosophy of Software Design》——(11)

术子米德

架构师成长笔记

浅谈加密算法 aes

奋飞安全

android 安全

王者荣耀商城异地多活架构设计

李大虾

#架构实战营 「架构实战营」

模块七作业

blazar

「架构实战营」

读《A Philosophy of Software Design》——(14)

术子米德

架构师成长笔记

读《A Philosophy of Software Design》——(12)

术子米德

架构师成长笔记

王者荣耀商城异地多活架构设计

AragornYang

架构训练营 架构实战营

模块7作业

Mr小公熊

模块七

Leo

架构实战营

SpringBoot接入轻量级分布式日志框架(GrayLog)

Java工程师

Java spring 分布式 springboot 组件

架构训练营 模块七

Geek_16d2b8

架构训练营 模块七

读《A Philosophy of Software Design》——(13)

术子米德

架构师成长笔记

众安保险 x StarRocks | 全新实时分析能力开启数字化经营新局面

StarRocks

数据库 StarRocks

洞见科技深度参编的央行金科联盟「多方安全计算」及「联邦学习」金融应用研究报告正式发布

洞见科技

金融科技 隐私计算 金融创新

Tapdata PDK 生态共建计划启动!Doris、OceanBase、PolarDB、SequoiaDB 等十余家厂商首批加入

tapdata

数据库 实时数据

关于数据仓库架构及各组件方案选型

五分钟学大数据

数据仓库 4月月更

那些年我们一起优化的SQL

Java工程师

Java sql 程序员 索引 MySQL 数据库

适合 Kubernetes 初学者的一些实战练习 (五)

汪子熙

postgresql Kubernetes Cloud Native statefulset 4月月更

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