NGINX, Inc. 自豪地宣布推出 NGINX Plus Release 7 (R7),这是我们应用交付平台的最新版本。 此次更新提供了对新 HTTP/2 Web 标准的完全支持实现,这是领先 Web 服务器中首个此类实现。 NGINX Plus 可以部署为新旧 Web 服务的前端 HTTP/2 网关和加速器。
[编辑 – 此文章已更新,引用了NGINX Plus API ,它取代并弃用了文章原始版本中提到的单独状态模块。]
最新更新还增加了显著的改进和附加功能,以确保组织能够以企业应用所需的性能、安全性和可靠性来交付其应用程序。 这些包括重大改进,使应用监控、管理和调试更容易,以及额外的安全和性能优化功能。
编辑器 – 有关NGINX Plus R7中主要新功能的更多详细信息,请参阅以下相关博客文章:
还请查看我们的点播网络研讨会“ NGINX Plus R7 有什么新功能?”
此版本的主要功能包括:
笔记: 根据用户对alpha 级补丁的测试,并在企业共同赞助商 Automattic 和 Dropbox 的早期支持下,HTTP/2 的最终开源版本将在 R7 发布后推出。
SO_REUSEPORT
选项,目前需要 Linux 3.9+ 或 DragonFly BSD。NGINX 公司首席执行官 Gus Robertson 表示:“在过去的一年里,我们已经帮助数百名新客户使用 NGINX Plus 部署他们的应用,而我们最新版本的真正目的是为他们提供更多的工具,以确保为用户提供最佳体验。” “我们是客户基础设施的结构,这使我们处于独特的地位,能够为客户部署的应用提供无与伦比的可视性和控制力。 我们非常重视我们在客户业务中扮演的关键角色,NGINX Plus R7 中的新功能反映了这一点。”
近几个月来,NGINX 的采用率大幅增长。 NGINX 是排名前 100,000 个网站的排名第一的 Web 服务器,全球近一半最繁忙的网站都使用 NGINX 向数十亿用户提供其应用。 NGINX, Inc. 继续大力投资于我们的开源和商业支持工具,以便每个人都能轻松获得完美的应用交付——从最小、最轻的应用程序到世界上最大的平台。
NGINX Plus R7功能详情
本节详细概述了NGINX Plus R7中的所有新特性和功能。
NGINX Plus R7通过新的nginx-plus-http2包提供对 HTTP 协议最新版本 HTTP/2 的支持。 HTTP/2 为现代 Web应用带来了更高的性能和安全性。 NGINX Plus 对 HTTP/2 的支持可与您现有的网站和应用程序无缝协作,无需对它们进行任何更改,只需对 NGINX Plus 配置进行极少的更改。 NGINX Plus R7完全向后兼容,可以并行传输 HTTP/1.x 和 HTTP/2 流量,无论用户选择哪种浏览器都能获得最佳体验。
为了简化向 HTTP/2 的过渡,NGINX Plus 充当了“HTTP/2 网关”。 在前端,NGINX Plus 与支持 HTTP/2 的客户端 Web 浏览器对话,在后端,它与以前一样与 HTTP/1.x(或 FastCGI、SCGI、uWSGI 等)对话。 这意味着 NGINX Plus 代理的服务器和应用不会受到转向 HTTP/2 的影响,甚至不需要知道客户端正在使用哪个 HTTP 版本。
为了并行支持 HTTPS 和 HTTP/2,NGINX Plus 同时支持 TLS 中的下一代协议协商 (NPN) 和application层协议协商 (ALPN) 扩展。 如果客户端和服务器都支持 HTTP/2,这些扩展用于将 HTTPS 连接无缝升级到 HTTP/2。
唯一需要的配置更改是将http2
参数添加到现有的listen
指令中。 请注意,仅当还包含ssl
参数时才支持 HTTP/2:
服务器 { 监听 443 ssl http2默认服务器; }
要启用 HTTP/2 支持,请从 NGINX Plus 存储库安装nginx-plus-http2包。 该软件包不支持SPDY/3.1。 标准nginx-plus和nginx-plus-extras包支持 SPDY/3.1 而不是 HTTP/2,并且由于其更广泛的浏览器支持和代码成熟度,目前推荐用于生产站点。 请注意,我们目前没有构建支持 HTTP/2 的nginx-plus-extras包版本。
要了解有关 HTTP/2 的更多信息:
NGINX Plus R7包含多项性能增强功能,可以帮助您的应用获得更好的性能。 它增加了对线程池优化的支持,可以卸载可能阻塞的磁盘操作并提高涉及大量磁盘 I/O 的工作负载(例如内容缓存)的性能。 NGINX Plus R7还包括套接字分片优化(需要 Linux 3.9+ 或 Dragonfly BSD),可提高大量 nginx 进程处理流量的大型多核服务器的效率。 它们已在 NGINX 开源部署中进行了现场测试,并且现在作为 NGINX Plus 的一部分得到全面支持。
在 NGINX Plus 中使用线程池可以为您带来 9 倍的更好性能。 众所周知,NGINX 使用异步、事件驱动的方法来处理连接。 但是异步、事件驱动的方法仍然存在一个问题:阻塞。 在 Linux 上,磁盘操作是阻塞的,因此在涉及大量磁盘 I/O 的操作期间,NGINX 可能会花费大量时间阻塞而不是执行生产性工作。
分配一个处理磁盘 I/O 的线程池可以缓解这个问题。 NGINX 工作进程不会自行转到磁盘,而是将 I/O 操作交给池中的可用线程,然后照常处理流量。 当磁盘操作完成时,NGINX 工作进程会收到通知并可以继续执行剩余工作以满足请求。
要启用线程池,只需将aio
线程
指令添加到位置
块:
位置 / { 根 /存储; aio 线程;}
有关 NGINX 中线程池的详细概述,请参阅此博客文章。
套接字分片最早是在 NGINX 1.9.1 中引入的。 此功能利用了 Linux 内核 3.9 版中引入的SO_REUSEPORT
套接字选项。 启用该选项后,Linux 内核本身会以循环方式在 NGINX 工作进程之间均匀分配新连接。 然后,工作进程执行请求限制、缓存、负载均衡以及您配置的所有其他工作。
如果没有SO_REUSEPORT
,新的连接将被提供给所有可用的工作进程。 第一个从队列中获取连接的人将获得该连接。 由于没有均匀分配负载的算法,因此很容易出现偏差,少数工作进程承担大部分负载,而其他工作进程却未得到充分利用。 让进程争夺数据包也是低效的,因为这会导致锁争用。
通过确保工作在 NGINX 工作进程之间均匀分配,套接字分片可以将性能提高 3 倍。 要启用此功能,请将新的repeatport
参数添加到现有的listen
指令中。
服务器 { 监听 12345重用端口; # ... }
要了解有关此功能的更多信息,请参阅此博客文章。
笔记: 此功能需要Linux内核3.9或更高版本。 Ubuntu 13.10 及更高版本以及 Red Hat Enterprise Linux 7 及更高版本包含所需的功能。
NGINX Plus R7增加了更多功能来提高应用的安全性。 本节概述了这些功能。
TCP 代理和负载均衡的新功能改善了访问控制(受 IP 地址限制)、连接限制(限制每个客户端或服务的并发连接数)和带宽使用(限制每个连接的上行或下行带宽)。 这些功能已经可用于 HTTP 负载均衡,并且在 API 计量和 DDoS 防护方面取得了巨大成功。
有关更多详细信息,请参阅相关博客文章NGINX Plus R7<.htmlspan>中的 TCP 负载平衡。
应大众需求, NGINX Plus R7可以代理和负载平衡使用 Microsoft NT LAN Manager ( NTLM ) 进行身份验证的应用。 NTLM 是许多 Microsoft 产品(尤其是旧版应用)使用的身份验证协议。
我们对 NTLM 的支持满足了安全要求,即与后端服务器的连接保持活动但不多路复用,以便每个经过 NTLM 身份验证的客户端都与后端服务器具有唯一的专用连接。
要启用 NTLM 支持,请在 HTTP 上游组的配置中添加ntlm
指令:
上游后端 { 服务器 192.168.1.10; 服务器 192.168.1.11; ntlm ; }
您现在可以放心地将 NGINX 部署为 Microsoft应用前面的代理、负载均衡器和 HTTP/2 加速器,以支持最广泛的客户端设备。
NGINX Plus 提供详细的监控和统计数据,以便于观察、优化和调试应用和基础设施。 基于该功能, NGINX Plus R7配备了新的计数器和统计数据。 这些计数器可帮助您调整 NGINX Plus 部署,并在何时需要扩大或缩小规模以处理更多负载时做出明智的决策。 新的统计数据和计数器是:
499
错误– 用于跟踪每个服务器的错误计数器499
错误,当客户端在后端服务器完成处理其请求之前关闭连接时发生。 几个499
错误是可以接受的(人们经常在会话中间关闭他们的网络浏览器),但大量的错误可能表明服务器超载并且需要很长时间来处理请求。与所有其他计数器一样,您可以通过在配置中包含api
指令来启用新的计数器。
NGINX Plus 仪表板在 R7 中得到了很大改进,以简洁的格式显示关键系统信息,即使对于大型复杂的配置也是如此:
要了解更多信息,请参阅相关博客文章《新的 NGINX Plus 仪表板<.htmla>》。
NGINX Plus R7还有许多其他增强功能,不属于上述任何类别:
开始
、结束
和偏移
参数。 这使得内容发布者可以轻松发布视频流片段的链接。内容修改- 以前,NGINX Plus 只能对响应内容进行一个简单的内容更改,用一个字符串替换另一个字符串。 sub_filter
指令已扩展以支持变量和替换链,从而可以进行更复杂的更改。
扩展的内容修改功能可以轻松调整网页内容,例如更改方法( https://而不是http:// )、域或消息内容中超链接的其他路径元素。 您还可以使用它将内容插入 HTML 页面,例如样板文本或 JavaScript 片段,而无需修改原始 HTML 内容。
$upstream_connect_time
变量——一个新的NGINX 变量,用于跟踪连接到后端服务器所需的时间,从而更容易识别慢速服务器。nginx
命令上的新-T
标志以清晰、标准化的格式将解析的 NGINX 配置转储到标准输出。 这对于存档目的或提交支持票时很有用。proxy_bind
、 proxy_protocol
和tcp_nodelay
指令以及listen
指令的backlog
参数现在支持 TCP 流量( stream模块)和 HTTP 流量。 有关更多详细信息,请参阅NGINX Plus R7 中的 TCP 负载均衡<.htmlspan> 。如果您将Phusion Passenger Open Source与 NGINX Plus 一起使用(您的配置中包含Passenger_root
指令),则必须在升级到NGINX Plus R7 nginx-plus-extras包的同时将 Passenger 运行时升级到版本 5.0.15。 执行以下步骤(这些命令适用于 Ubuntu):
停止 NGINX Plus:
#停止服务
将您的 Phusion Passenger 运行时升级到 5.0.15:
# apt-get 安装乘客
将 NGINX Plus Extras 包升级到 R7:
# apt-get 安装 nginx-plus-extras
按照 Phusion Passenger升级说明中所述对 NGINX Plus 配置指令进行必要的更新。
启动 NGINX Plus:
#启动 nginx 服务
完整的安装和升级说明可在 NGINX Plus客户门户上找到。
如果您正在运行 NGINX Plus,我们强烈建议您尽快升级到 Release 7。 您将获得大量修复和改进,如果您需要提出支持单,它将帮助我们为您提供帮助。 您可以在客户门户上找到安装和升级说明。
如果您还没有尝试过NGINX Plus ,我们鼓励您尝试使用它来实现 Web 加速、负载均衡和应用交付,或者作为具有增强监控和管理API 的完全支持的 Web 服务器。 您可以立即免费开始30 天评估,亲自了解 NGINX Plus 如何帮助您扩展和交付应用。
listen
指令上的spdy
参数(将其替换为http2
和ssl
参数以启用对 HTTP/2 的支持)。 使用nginx-plus-http2包时,如果任何listen
指令具有spdy
参数,NGINX Plus 将无法启动。“这篇博文可能引用了不再可用和/或不再支持的产品。 有关 F5 NGINX 产品和解决方案的最新信息,请探索我们的NGINX 产品系列。 NGINX 现在是 F5 的一部分。 所有之前的 NGINX.com 链接都将重定向至 F5.com 上的类似 NGINX 内容。”