我们很高兴地宣布,应用交付平台的最新版本NGINX Plus Release 8 (R8)现已发布。此版本包括完全达到生产就绪状态且经过安全加固的HTTP/2实现、持久动态重新配置API,以及全新的Slice模块,可用于大规模缓存大型视频文件。此外,此版本还提供更多功能,助力实现顺畅的应用交付。
编者注:NGINX Plus R8还引入了OAuth技术预览版。有关详细信息,请参阅下文。
有关NGINX Plus R8主要新功能的更多详细信息,请参阅以下相关资源。
NGINX Plus R8 的主要新功能包括:
- 可全面用于生产环境的HTTP/2实现。在NGINX Plus R7中,我们推出了HTTP/2支持,当时距该协议获批还不到7个月。如今,NGINX已成为广泛用于HTTP/2的Web服务器。该版本发布后,我们并未停止开发,而是继续努力改进相关实现。NGINX Plus R8提供全面支持、可用于生产环境且经过安全加固的HTTP/2标准实现。HTTP/2可将网站性能提升最高可达30%。借助NGINX Plus R8,可以继续为新网站和现有网站添加HTTP/2支持,无需更改应用。
- 持久化动态重新配置 API:借助 NGINX Plus 的动态重新配置 API,无需重启 NGINX Plus,也无需手动修改并重新加载配置文件,即可添加或移除上游服务器。此功能非常适合自动扩缩容和服务发现,可按需修改负载均衡池。从 NGINX Plus R8 开始,通过 API 所做的更改可在重启或重新加载配置后继续保留。此次 API 更新支持永久更改 NGINX Plus 负载均衡配置,包括添加和移除服务器,以及更改服务器的负载均衡优先级。此 API 易于保护,可根据需要随时进行更改。
- 适用于大型视频文件的可扩展缓存:NGINX Plus R8改进了可扩展内容缓存,能够更好地处理HTML5视频等大型视频文件。NGINX Plus不会将整个视频文件存储为单个缓存条目,而是将其切分成较小的片段并分别缓存。这种缓存结构更符合用户在互联网上观看视频的方式(例如快进、提前结束观看等),并可降低用户延迟以及源服务器的入站和出站网络流量。
NGINX Plus R8功能详解
本节详细概述NGINX Plus R8的所有新特性和功能。
OAuth技术预览
编者注:NGINX Plus R8引入了OAuth技术预览版,这是一种基于OAuth 2.0标准的身份验证实现,相关详细信息最初发布于此。在NGINX Plus R10中,我们不再提供OAuth技术预览版,改为原生支持JSON Web Token(JWT)标准。
可用于生产环境的HTTP/2实现
HTTP/2是HTTP协议的最新版本。它解决了HTTP协议原始版本中的许多问题,从而提升整体性能,并提高资源利用效率。
自该标准于2015年2月获批以来,HTTP/2的使用率一直稳步上升。截至本文撰写时,所有网站中有6%使用HTTP/2,并且互联网用户中有69%使用支持HTTP/2的浏览器。
NGINX Plus R8为您提供经过大量实战检验、稳定且可靠的HTTP/2实现。在启用HTTP/2的网站中,71%由NGINX和NGINX Plus提供支持。我们还将早期采用者的反馈融入了产品。我们的HTTP/2实现全面支持生产环境使用,并可扩展以应对严苛的工作负载。
NGINX Plus充当HTTP/2网关
NGINX Plus充当“HTTP/2网关”,帮助顺利过渡到新协议。在前端,NGINX Plus通过HTTP/2与支持该协议的客户端Web浏览器通信。在后端,NGINX Plus仍像以前一样通过HTTP/1.x(或FastCGI、SCGI、uwsgi等)通信。在两者之间,NGINX Plus负责转换HTTP/2与HTTP/1.x(或FastCGI等)协议。这意味着,迁移到HTTP/2不会影响由NGINX Plus代理的服务器和应用,它们甚至无需知道客户端是否使用HTTP/2。不过,为HTTP/2客户端提供服务的网站和应用必须使用TLS/SSL,这是所有支持HTTP/2的Web浏览器的要求。
只需对NGINX Plus或NGINX配置进行一项更改,即在http2指令中添加listen参数:
listen 443 ssl http2 default_server;有关NGINX Plus和NGINX中HTTP/2的更多详情,请参阅我们的白皮书和点播网络研讨会。
持久化动态重新配置
NGINX Plus提供了一个基于HTTP的API,无需重新加载配置,即可动态添加、移除和修改后端服务器。此功能非常适合服务发现、自动扩缩容,以及其他需要按需添加和移除服务器的应用场景。
在NGINX Plus R8中,通过此API所做的更改现在可在NGINX Plus重启和重新加载配置后继续保留。请在state指令中新增upstream块,以指定NGINX Plus用于存储上游组中服务器状态信息的文件。通过动态重新配置API所做的更改会记录在该文件中。NGINX Plus会在启动时读取此文件,从而使更改在重启后继续保留。
upstream backend {
zone backend 64k;
state /var/lib/nginx/state/backend.state;
}The state指令用于指定NGINX Plus存储上游组中服务器状态信息的文件。配置中包含该指令时,无法使用server指令静态定义服务器。
用户nginx必须对/var/lib/nginx/state/目录拥有写入权限。如果该目录尚不存在,可以运行以下命令:
$ sudo mkdir -p /var/lib/nginx/state$ sudo chown nginx:nginx /var/lib/nginx/state大型视频文件的可扩展缓存
缓存是加快Web内容交付速度的有效方式之一。缓存不仅能让内容更靠近最终用户,从而降低延迟,还能减少向上游源服务器发出的请求数量,降低带宽使用量并有效提升容量。视频,尤其是HTML5视频,非常适合缓存,因为其内容是静态的,而且刚发布时通常会收到大量请求。
对于HTML5视频,浏览器通过发出HTTP字节范围请求来对内容进行伪流式传输。例如,浏览器先请求视频的第1分钟,再请求第2分钟,依此类推。这种流式传输方式也便于实现快进和快退功能,因为浏览器可以直接跳过不需要的视频片段,并从用户快进或快退到的位置开始请求相应的字节范围。
NGINX Plus R8新增了Slice模块,可更好地支持浏览器与服务器针对缓存视频文件采用的这种交互方式。该模块将文件拆分为较小的片段,然后缓存这些片段。采用这种缓存结构,可更好地适应现代视频流式传输技术,例如HTML5视频所使用的技术。
要启用缓存切片,请添加slice指令:
proxy_cache_path /tmp/mycache keys_zone=mycache:10m;
location / {
proxy_cache mycache;
proxy_pass http://localhost:8000;
slice 1m;
proxy_cache_key $uri$is_args$args$slice_range;
proxy_set_header Range $slice_range;
proxy_http_version 1.1;
proxy_cache_valid 200 206 1h;
}在此示例配置中,NGINX Plus 将视频文件拆分为 1 MB 的片段。还必须包含以下指令:
proxy_cache_key,在定义的键中包含新的$slice_range变量,用于设置缓存键,以区分原始文件的不同片段。proxy_set_header,使用Range覆盖HTTP请求中的标头,值为$slice_range。如果客户端请求的字节范围与NGINX Plus所创建分片之间的边界不一致,NGINX Plus需要发出多个子请求,才能获取客户端字节范围请求中的所有数据。proxy_http_version,将请求升级到HTTP/1.1,因为HTTP/1.0不支持字节范围请求。
有关这项新功能的更多详情,请参阅这篇相关博客文章。
其他功能
NGINX Plus R8还引入了多项其他改进,帮助您顺畅地交付应用,包括:
- 为复杂应用提供更灵活的运行状况检查。默认情况下,NGINX Plus会将运行状况检查消息发送到
server指令在upstream块中指定的端口。借助NGINX Plus R8,现在可以在每个location块中指定备用端口,这对于监控同一主机上多个服务的运行状况尤其有用。请在port指令中添加新的health_check参数:
location / { proxy_pass http://backend;
health_check port=8080;
}- 默认情况下,NGINX Plus现在会缓存HTTP
HEAD请求(缓存前会将其转换为GET请求)。要禁用此类缓存,请添加proxy_cache_convert_headoff指令。HEAD请求与标准GET请求相同,但不返回响应正文。HEAD请求可用于测试链接是否有效、是否可访问以及最近是否有修改。 - 新增变量“
$realip_remote_addr”,用于在使用“Real IP”模块时捕获客户端的原始IP地址。 - 新增的“
nohostname”参数可用于access_log和error_log指令,禁止将主机名字段记录到syslog;向本地syslog服务器写入日志时,无需记录主机名。
NGINX Plus Extras 软件包中的以下模块已更新:
- The Headers-More模块已更新至0.28
- The Lua模块已更新至 0.9.20
- The Phusion Passenger Open Source模块已更新至 5.0.22
- The Redis模块已更新至 0.21
以下软件包已不再提供:
- nginx-plus-http2:HTTP/2支持现已整合到nginx-plus和nginx-plus-extras软件包中。NGINX Plus不再支持SPDY。
- nginx-plus-lua:如需Lua支持,请使用nginx-plus-extras软件包。
升级或试用 NGINX Plus
如果您正在运行NGINX Plus,强烈建议尽快升级到Release 8。升级后可获得多项修复和改进;如果需要提交支持工单,也有助于我们更好地提供支持。安装和升级说明可在客户门户中查看。
如果您尚未试用过NGINX Plus,建议体验其Web加速、负载均衡和应用交付功能,也可将其用作获得全面支持的Web服务器,并使用增强的监控和管理API。立即开始免费试用30天,亲自了解NGINX Plus如何帮助您交付应用并实现横向扩展。
关于作者

相关博客文章
NGINX Plus R26 正式发布
NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。
使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。
Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。
NGINX Plus R19 正式发布
NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。
NGINX现已正式加入F5
NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。
