我们很高兴地宣布,NGINX Plus Release 5(R5)现已发布。此版本整合了近期在NGINX Open Source发行版中发布的功能,以及多项仅在NGINX Plus中提供的功能。
主要新增功能是面向通用TCP协议的负载均衡,例如数据库、RPC和聊天协议。相关博文《NGINX Plus R5中的TCP负载均衡》提供了完整的详细信息。
NGINX Plus R5还对负载均衡和缓存进行了多项改进。
如果您正在寻找Web加速、负载均衡或应用交付解决方案,或者需要一款提供全面支持并配备额外NGINX Plus功能的Web服务器,可以考虑监控和管理API。
TCP负载均衡
NGINX Plus R5新增了TCP连接负载均衡功能,该功能在stream模块中实现。您可以对多种非HTTP连接进行负载均衡,例如MySQL和SSL/TLS连接(无需解密)。还可以将现有的mail代理模块与新的stream模块结合使用,对邮件协议(SMTP、POP3、IMAP)进行负载均衡和管理。

此版本提供多种负载均衡方法(轮询、最少连接、哈希、IP哈希),支持控制连接参数、通过内联健康检查实现高可用性、对恢复运行的服务器执行慢启动,以及手动将服务器指定为活动、备用或停用状态。
如需了解更多信息,请参阅博客中的《NGINX Plus R5中的TCP负载均衡》以及《NGINX Plus管理指南》中的“TCP负载均衡”。此功能为NGINX Plus专有。
更好地控制负载均衡用户会话
有时需要将上游节点下线,以便进行维护或升级。借助Release 5中新增的会话排空功能,可以指示NGINX Plus不再向该节点发送新连接,同时保留该节点上已建立的会话,直至会话结束。

可以使用实时活动监控来监控正在排空会话的节点上的流量,并在确认用户会话已结束后再将该节点下线:
# Return the Unix epoch time in seconds (rounded to milliseconds) when # Server 1 in upstream group 'backends' was last used
$ curl http://localhost:8080/status/upstreams/backends/1/selected
# Calculate how long the server has been idle (in milliseconds)
$ expr `date +%s000` - `curl -s http://localhost:8080/status/upstreams/backends/1/selected`[编者注:上述命令使用NGINX Plus Status模块(通过status指令启用)。从NGINX Plus API的NGINX Plus Release 13(R13)及更高版本开始,该模块已被取代并弃用,并将在NGINX Plus R15之后不再提供。]
用于跟踪用户会话的粘性 Cookie机制已更新,过期时间现在从会话中的最近一次请求开始计算,而不是从首次请求开始计算。因此,可以更准确地跟踪会话。
会话排空和粘性 Cookie 功能仅在 NGINX Plus 中提供。
节点发生故障时改进流量控制
当上游组中的某台服务器未能响应请求时,NGINX Plus会自动在该组中的其他服务器上重试该请求。新增的proxy_next_upstream_tries和proxy_next_upstream_timeout指令分别通过限制重试次数和NGINX 可持续重试的时长,让您可以更好地控制此行为。
此功能随NGINX 1.7.5发布,适用于HTTP、FastCGI、uWSGI、SCGI和memcached流量的代理。
缓存内容支持HTTP“Vary”标头
某些Web服务器会根据发出请求的客户端类型,提供不同版本的资源。例如,当浏览器请求网站主页时,服务器会提供包含高分辨率图像的版本;而当客户端是移动设备时,则会提供不含图像的版本。此类服务器可以在响应中设置Vary标头,告知缓存代理服务器使用客户端请求中的哪些标头来确定要发送的版本(这也意味着代理服务器在确定要发送缓存资源的哪个版本时,需要使用哪些标头)。
一种常见用例是区分同一资源的压缩版本和未压缩版本。在这种情况下,服务器响应中的Vary: Accept-Encoding标头指示缓存根据客户端请求中Accept-Encoding标头的值来确定要提供的版本。
NGINX Plus现已全面支持Vary标头,可正确缓存同一资源的多个变体。此功能在NGINX 1.7.7中引入。
改进了从缓存提供字节范围的支持
客户端可以在请求中指定相应的字节范围,以获取文件的特定部分,例如视频下载中的某个片段或PDF文档中的某一页。即使内容的源服务器不支持字节范围,NGINX Plus也可以响应此类请求,并将缓存资源中相应字节范围的数据传送给客户端。
NGINX Plus首次收到文件请求(无论是请求完整文件还是某个字节范围)时,会从源服务器请求整个文件并将其缓存。随后,NGINX Plus会使用缓存响应字节范围请求,从而减轻上游(源)服务器的负载。
此功能在NGINX 1.7.7中引入,可通过proxy_force_ranges指令启用。
更灵活地控制上游带宽
新的proxy_limit_rate指令可限制NGINX Plus从上游服务器读取数据的速度。这可防止单个大型请求占用NGINX与源服务器之间的全部带宽。启用缓存后,该指令可有效控制内容写入磁盘缓存的速率,这对于写入延迟较高的磁盘非常有用。
此指令在NGINX 1.7.7中引入。
NGINX Plus R5 中的其他变更
第三方RTMP 模块已添加到NGINX Plus Extras软件包中。
NGINX Plus现已支持Ubuntu 14.10、Ubuntu 14.04上的ARMv8(aarch64),以及SUSE Linux Enterprise Server 12。
升级或试用NGINX Plus
我们强烈建议NGINX Plus客户尽快更新至Release 5。此次更新包含多项修复和改进,也有助于我们在您需要提交支持工单时提供协助。有关安装和升级说明,请访问客户门户。
如果尚未体验过NGINX Plus,立即开始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的开源产品和商业产品。
