我们很高兴地宣布,NGINX Plus Release 11(R11)现已发布。此版本为NGINX Plus带来了多项新功能,使产品更易于扩展和定制,并支持更广泛的部署场景。
NGINX Plus R11为动态模块引入了二进制兼容性。这意味着,针对NGINX Open Source编译的动态模块可以加载到NGINX Plus中。
您可以利用大量第三方NGINX模块来扩展NGINX Plus并为其添加功能,这些模块包括各种开源模块和商业模块。开发者可以基于受支持的NGINX Plus核心创建自定义扩展、附加组件和新产品。
NGINX Plus R11还新增了多项增强功能:
- 改进的TCP/UDP负载均衡:新增功能包括SSL服务器名称路由、新的日志记录功能、更多变量,以及改进的PROXY协议支持。这些新功能增强了调试能力,并支持更广泛的企业应用。
- 更精准的IP地址地理定位,第三方GeoIP2模块现已通过认证,并面向NGINX Plus客户提供。与原GeoIP模块相比,这一新版本可提供本地化且更丰富的位置详细信息。
- 增强的NGINX JavaScript模块:NGINX JavaScript是基于JavaScript的新一代NGINX Plus配置语言。借助新增功能,可在Stream(TCP/UDP)模块中动态修改请求和响应数据。
详解NGINX Plus R11
动态模块的二进制兼容性
NGINX社区为NGINX Open Source开发了丰富多样的扩展模块,包括安全解决方案、身份验证模块,甚至是完整的应用运行时环境,例如Lua。
我们为NGINX Plus构建并维护其中一些第三方模块,随每个版本更新,并通过NGINX Plus存储库分发。这些构建版本已通过认证,可与NGINX Plus正常配合使用;我们的支持团队还提供安装和基本配置方面的技术支持。
在R11版本中,现在可以针对相应的NGINX Open Source版本编译任何符合要求的第三方模块,然后将这些模块安全地加载到NGINX Plus中。
每个NGINX Plus版本均基于相应版本的NGINX Open Source构建。运行nginx -v可确定匹配的开源版本号;对于NGINX Plus R11,该版本号为NGINX 1.11.5。
$ nginx -vnginx version: nginx/1.11.5 (nginx-plus-r11)要编译动态模块,首先需要获取当前NGINX Plus版本所基于的NGINX源代码(此处为nginx-1.11.5,适用于NGINX Plus R11):
$ wget https://nginx.org/download/nginx-1.11.5.tar.gz$ tar -xzvf nginx-1.11.5.tar.gz然后,运行configure命令并使用新的--with-compat参数,以创建与NGINX Plus兼容的标准构建环境:
$ cd nginx-1.11.5$ ./configure --with-compat --add-dynamic-module=/path/to/module
$ make modules有关如何编译自有模块以与NGINX Plus配合使用的更多详细信息,请参阅我们博客中的《为NGINX Plus编译动态模块》<.htmla>。
改进的TCP/UDP负载均衡
NGINX Plus R11通过对TCP和UDP负载均衡进行关键增强,可支持更广泛的应用。
SSL服务器名称路由
现在,您可以使用NGINX Plus的TCP/UDP负载均衡器对SSL/TLS连接进行负载均衡,而无需解密连接。此功能适用于需要将SSL/TLS加密连接转发到远程服务器的安全环境或高流量环境。
借助新增的SSL服务器名称预读功能,NGINX Plus R11可以检查每个传入的SSL/TLS连接,并确定该连接应路由到的目标域(例如服务器名称指示[SNI]值)。
SSL服务器名称通过新的$ssl_preread_server_name变量提供。该变量包含从SSL/TLS握手的SNI字段中提取的目标主机名称。
可以将该变量用作proxy_pass指令的参数,或用作虚拟服务器访问日志中的字段。请注意,要启用此功能,必须在配置中包含ssl_preread指令,如以下示例所示:
正在加载代码示例…
支持访问日志
NGINX Plus R11中的新Stream Log模块为TCP/UDP连接提供访问日志记录功能,与先前版本为HTTP连接提供的功能相同。现在,可以记录由Stream模块处理的每个TCP/UDP会话,以检查数据速率、负载均衡决策、错误状况等信息。这是调试或审计TCP或UDP事务时的一项重要功能。
Stream模块提供了大量变量,所有变量均可记录。可以使用变量按以下方式自定义默认日志格式:
正在加载代码示例…
改进的PROXY协议支持
此版本进一步完善了对TCP连接所用PROXY协议的支持,使NGINX Plus能够接受使用PROXY协议增强的TCP连接。
此功能可确定连接的真实源IP地址,用于日志记录或身份验证,从而提升使用NGINX Plus管理TCP连接的能力。
其他扩展状态指标
The Status模块现在会在stream类别中报告更多指标,包括已处理的会话数以及各种错误情况的计数。
结合Stream Log模块中新增的access_log命令,这些额外指标可帮助您更轻松地监控TCP和UDP服务的行为,并检测错误率异常的情况。
[编者注:Status模块已弃用,并由NGINX Plus API模块取代。该模块在NGINX Plus R13中引入。]
GeoIP2模块,提升地理位置定位能力
第三方GeoIP2 module现已通过认证,NGINX Plus用户可从我们的存储库中获取。GeoIP2 module使用MaxMind GeoIP2格式的数据库。与原始GeoIP module所用的数据库相比,这些数据库可提供本地化名称,并包含更丰富的详细信息。
要获取新模块,请运行以下命令(适用于Debian和Ubuntu):
$ apt-get update$ apt-get install nginx-plus-module-geoip2在/etc/nginx/nginx.conf的主(顶层)上下文中,为新安装的模块添加一条load_module指令:
正在加载代码示例…
有关GeoIP2模块的更多信息,请参阅GitHub官方页面。
NGINX JavaScript 模块增强功能
编辑注:以下用例只是NGINX JavaScript模块众多用例之一。有关所有用例的列表,请参阅《NGINX JavaScript模块用例》。
本文已更新,改为使用Stream模块重构后的会话(s)对象。该对象于NGINX JavaScript 0.2.4中引入。
NGINX JavaScript是适用于NGINX和NGINX Plus的新一代配置语言。借助NGINX JavaScript,可以使用熟悉的JavaScript语法,执行标准NGINX配置语言无法实现的更复杂操作。此版本对NGINX JavaScript模块进行了多项增强。
NGINX JavaScript仍在开发中,此版本中的更新正逐步实现最终规划的功能。在这一里程碑中,我们重点关注两个方面:与Stream模块集成,以及扩展JavaScript语言支持。
在Stream模块中,NGINX JavaScript可以访问多个内部请求处理阶段,以检查和修改数据。例如,以下NGINX JavaScript代码演示了如何检查MySQL协议流中的第三条消息,并搜索关键模式以识别SQL操作:
正在加载代码示例…
NGINX JavaScript核心语言支持已得到显著扩展,可支持更多内置对象和函数。更新通过Mercurial源代码仓库和NGINX Plus软件包仓库发布。
缓存性能提升
NGINX Plus运行一个独立的缓存管理器进程,负责清理磁盘缓存。在某些情况下,缓存管理器可能需要删除大量文件,例如需要回收大量内存时。
借助新增的“取消链接限速”功能,可以指定缓存文件的最大删除速率。降低删除速率有助于减轻底层磁盘的负载,从而提升系统性能。
删除速率由以下指令的新参数控制:manager_files、manager_threshold和manager_sleep。这些指令包括proxy_cache_path、fastcgi_cache_path、scgi_cache_path和uwsgi_cache_path。
升级或试用 NGINX Plus
如果您正在运行NGINX Plus,建议在方便时升级到Release 11。升级后可获得多项修复和改进,也有助于我们在您需要提交支持工单时提供帮助。安装和升级说明可在客户门户中查看。
注意:正如此前所公告的那样,NGINX Plus R11及更高版本不再包含nginx-plus-extras软件包。如果仍在使用该软件包,则必须改为部署nginx-plus软件包,并从NGINX Plus模块存储库中动态加载所需的其他模块。
如果您尚未试用过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的开源产品和商业产品。
