QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

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

评论

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

阿里云高级技术专家林立翔:基于阿里云弹性GPU服务的神龙AI加速引擎,无缝提升AI训练性能

云布道师

阿里云 AI

Dubbo + ZooKeeper丨如何解决线上故障排查链路长的难题

阿里巴巴云原生

阿里云 开源 云原生 dubbo Zookeepe

《云原生架构容器&微服务优秀案例集》惊喜来袭

阿里巴巴云原生

阿里云 容器 微服务 云原生

Three.js 进阶之旅:全景漫游-初阶移动相机版

dragonir

JavaScript 前端 three.js

记录丨阿里云校招生的成长经历

阿里巴巴云原生

阿里云 云原生 校招

ShareSDK iOS端如何实现微信分享链接与登录

MobTech袤博科技

龙蜥白皮书精选:敏捷开发场景下的调度器热升级 SDK

OpenAnolis小助手

敏捷开发 sdk 白皮书 调度器 龙蜥社区

pulsar 报错源码排查:"Not enough non-faulty bookies available"

李code

源码 pulsar 故障恢复 参数调优 白话源码

Spring竟然可以创建“重复”名称的bean?—一次项目中存在多个bean名称重复问题的排查

京东科技开发者

spring bean @Bean 企业号 3 月 PK 榜

游戏版《西部世界》来了!NPC全由AI操控,行动自如有理想和记忆,基于最新GAEA技术系统打造

Openlab_cosmoplat

AI 游戏 开源社区

Spring依赖注入Bean类型的8种情况,你学废了吗?

Java永远的神

spring 源码 程序员 后端 java面试

博睿学院 | 本周四,博睿学院数据集成系列公开课正式开讲

博睿数据

数据中台 智能运维 博睿数据 博睿学院

Z世代新母婴人群消费洞察2023

易观分析

母婴 新消费 Z世代 消费

永洪BI、瓴羊Quick BI领衔国产BI工具

巷子

【iOS逆向与安全】利用IDAPython插件提高反汇编和逆向工程效率

小陈

安全 逆向 iOS逆向 ios安全 逆向分析

VisBug:助力前端开发的浏览器插件

南城FE

CSS 效率工具 前端 浏览器 插件

如何使用责任链默认优雅地进行参数校验?

JAVA旭阳

Java spring

TitanIDE:云原生开发到底强在哪里?

行云创新

ide 云原生 云开发

设计师的魔法:让你的冰冷设备即刻变成迪士尼

鼎道智联

设计 动效设计

经过小折腾,可算是把 Code Coverage API 用上了

HoneyMoose

用AI回忆起曾被忘却的语言

白洞计划

AI

AI大模型加速升级,数据和隐私何以为安?

博文视点Broadview

openEuler开源新项目,嵌入式实时虚拟机ZVM介绍

openEuler

Linux 操作系统 虚拟机 嵌入式 openEuler

工信部数据库适配验证中心项目验收通过 柏睿数据参与共建

科技热闻

OpenHarmony社区运营报告(2023年2月)

OpenHarmony开发者

OpenHarmony

MobTech|如何选择应用内广告SDK产品

MobTech袤博科技

GPT-4 可以开始测试了

HoneyMoose

扒站软件:SiteSucker汉化激活

真大的脸盆

Mac Mac 软件 网站下载 下载网站工具

就在明天!用友企业数智化财务峰会落地广州,聚焦实现业财合一新价值

用友BIP

又发现一个开源商城项目,谷粒商城外又多了个选择

马丁玩编程

Redis高频40问

程序员大彬

Java Redis redis 底层原理

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