博客 | NGINX

宣布推出 NGINX Plus R8

NGINX-F5-horiz-black-type-RGB 的一部分
欧文·加勒特缩略图
欧文·加勒特
2016 年 1 月 19 日发布

我们很荣幸地宣布推出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 的支持。 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 中,我们用对 JSON Web Token (JWT) 标准的原生支持取代了 OAuth 技术预览。

适用于生产的 HTTP/2 实现

HTTP/2是HTTP协议的最新版本。 它修复了原版HTTP协议中的大量问题,从而提高了整体性能,提高了资源利用效率。

自 2015 年 2 月该标准获得批准以来,HTTP/2 的使用率一直在稳步增长。 截至撰写本文时,所有网站中有 6% 使用 HTTP/2 ,互联网上69% 的用户使用支持 HTTP/2 的浏览器。

借助NGINX Plus R8 ,您将获得当今最久经考验、最稳定、最可靠的 HTTP/2 实现。 71% 支持 HTTP/2 的网站由 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 等)之间进行转换。 这意味着 NGINX Plus 代理的服务器和应用不受转向 HTTP/2 的影响,甚至不需要知道他们的客户端是否正在使用 HTTP/2。 但是,为 HTTP/2 客户端提供服务的网站和应用必须使用 TLS/SSL,这是所有支持 HTTP/2 的 Web 浏览器的要求。

您需要做的唯一 NGINX Plus 或 NGINX 配置更改是将http2参数添加到listen指令:

监听 443 ssl http2默认服务器;

有关 NGINX Plus 和 NGINX 中的 HTTP/2 的更多详细信息,请参阅我们的白皮书点播网络研讨会

持久动态重新配置

NGINX Plus 提供了基于 HTTP 的 API,用于动态添加、删除和修改后端服务器,而无需重新加载配置。 对于服务发现、自动扩展和其他需要按需添加和删除服务器的应用来说,这是一个很棒的功能。

使用NGINX Plus R8 ,使用此 API 所做的更改现在可以在 NGINX Plus 重启和配置重新加载后保留。 在上游块中添加新的状态指令,以命名 NGINX Plus 存储上游组中服务器的状态信息的文件。 使用动态重新配置 API 所做的更改将记录在该文件中。 NGINX Plus 在启动时读取该文件,这就是您的更改在重启后仍然存在的方式。

上游后端 { 区域后端 64k;状态/var/lib/nginx/state/backend.state; }

state指令命名了 NGINX Plus 存储上游组中服务器的状态信息的文件。 当它包含在配置中时,不能使用服务器指令静态定义服务器。

用户nginx必须对/var/lib/nginx/state/目录具有写权限。 如果该目录不存在,您可以运行以下命令:

$ sudo mkdir -p /var/lib/nginx/state $ sudo chown nginx:nginx /var/lib/nginx/state

大型视频文件的可扩展缓存

缓存是加速网络内容交付的最快方法之一。 缓存不仅将内容放置在更靠近最终用户的地方,从而减少延迟,而且还减少了对上游原始服务器的请求数量,降低了带宽使用率并有效提高了容量。 视频,尤其是 HTML5 视频,是缓存的主要目标,因为内容是静态的并且在首次发布时往往会被大量请求。

对于 HTML5 视频,浏览器通过发出 HTTP 字节范围请求来伪流化内容。 例如,它请求视频的第一分钟,然后是第二分钟,依此类推。 通过这种方式进行流式传输还可以轻松实现快进和快退功能,因为浏览器可以跳过不需要的视频部分,而是从用户快进或快退到的点开始请求的字节范围。

NGINX Plus R8包含新的Slice模块,以更好地支持这种风格的缓存视频文件的浏览器服务器交互。 该模块将文件分解成更小的片段,然后缓存这些片段。 以这种方式构建缓存更符合现代视频流技术,例如 HTML5 视频所使用的技术。

要启用缓存切片,请包含切片指令:

proxy_cache_path /tmp/mycache keys_zone=mycache:10m; 位置 / { proxy_cache mycache; proxy_pass http://localhost:8000;切片 1m ; proxy_cache_key $uri$is_args$args $slice_range ; proxy_set_header 范围$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 – 使用$slice_range覆盖 HTTP 请求中的Range标头。 如果客户端请求的字节范围与 NGINX Plus 创建的片段之间的边界不一致,则 NGINX Plus 需要发出多个子请求来获取客户端字节范围请求中的所有数据。
  • proxy_http_version – 将请求升级到 HTTP/1.1,因为 HTTP/1.0 不支持字节范围请求。

有关此新功能的更多详细信息,请参阅此相关博客文章

其他功能

NGINX Plus R8还引入了许多其他改进,以帮助您完美地交付应用,其中包括:

  • 对复杂应用进行更灵活的健康检查。 默认情况下,NGINX Plus 将健康检查消息发送到上游块中的服务器指令指定的端口。 使用NGINX Plus R8,您现在可以在每个位置块中指定一个备用端口,这在监控同一主机上许多服务的运行状况时特别有用。

    将新的端口参数添加到health_check指令中:

    位置 / { proxy_pass http://backend; health_check port= 8080; }
    
  • 默认情况下,NGINX Plus 现在缓存 HTTP HEAD请求(它在缓存它们之前将它们转换为GET请求)。 要禁用这种类型的缓存,请包含proxy_cache_convert_head off指令。

    HEAD请求与标准GET请求相同,只是不返回响应主体。 HEAD请求对于测试链接的有效性、可访问性和最近修改很有用。

  • 使用真实 IP模块时,新变量$realip_remote_addr可捕获原始客户端 IP 地址。
  • access_logerror_log指令中的新nohostname参数禁用将主机名字段记录到syslog ;当记录到本地 syslog 服务器时,主机名是不必要的。

NGINX Plus Extras 软件包中的以下模块已更新:

以下软件包不再可用:

  • nginx-plus-http2 – HTTP/2 支持现已纳入nginx-plusnginx-plus-extras包中。 NGINX Plus 不再支持 SPDY。
  • nginx-plus-lua – 如需 Lua 支持,请使用nginx-plus-extras包。

升级或尝试 NGINX Plus

如果您正在运行 NGINX Plus,我们强烈建议您尽快升级到 Release 8。 您将获得大量修复和改进,如果您需要提出支持单,它将帮助我们为您提供帮助。 您可以在客户门户上找到安装和升级说明。

如果您还没有尝试过NGINX Plus ,我们鼓励您尝试使用它来进行 Web 加速、负载均衡和应用交付,或者作为具有增强监控管理API 的完全支持的 Web 服务器。 您可以立即免费开始30 天评估,亲自了解 NGINX Plus 如何帮助您交付和扩展您的应用。


“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”