博客 | NGINX

宣布推出 NGINX Plus R11

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

我们很高兴地宣布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 的下一代配置语言。 新功能使您能够在流(TCP/UDP)模块中动态修改请求和响应数据。

 

NGINX Plus R11 详细信息

动态模块的二进制兼容性

NGINX 社区为 NGINX 开源开发了广泛的模块扩展- 安全解决方案、身份验证模块,甚至完整的应用运行时环境(如Lua)

我们为 NGINX Plus 构建并维护一些第三方模块,每次发布时更新它们并通过我们的 NGINX Plus 存储库分发它们。 这些版本经过认证,可以与 NGINX Plus 正确配合使用,并且我们的支持团队提供安装和基本配置技术支持。

随着 R11 版本的发布,您现在可以针对相应的 NGINX 开源版本编译任何兼容的第三方模块,然后将这些模块安全地加载到 NGINX Plus 中。

NGINX Plus 的每个版本都是基于 NGINX 开源版本构建的。 运行nginx -v确定匹配的开源版本号;对于NGINX Plus R11 ,即 NGINX 1.11.5。

$ nginx -v nginx 版本:nginx/1.11.5 (nginx-plus-r11)

要编译动态模块,首先要获取你的 NGINX Plus 版本所基于的 NGINX源代码(此处, NGINX Plus R11nginx-1.11.5 ):

$ wget https://nginx.org/download/nginx-1.11.5.tar.gz $ tar -xzvf nginx-1.11.5.tar.gz

然后使用新的--with-compat参数运行configure命令来创建与 NGINX Plus 兼容的标准构建环境:

$ cd nginx-1.11.5 $ ./configure --with-compat --add-dynamic-module=/path/to/module $ make modules

有关编译自己的模块以便与 NGINX Plus 一起使用的更多详细信息,请参阅我们博客上的为 NGINX Plus 编译动态模块<.htmla>。

您自行编译的模块(社区模块、第三方合作伙伴提供的模块和自定义模块)未经过 NGINX 测试或支持。如果您因问题寻求技术支持,NGINX 技术支持团队可能会要求您删除不受支持的模块并重现故障,作为我们技术支持流程的一部分,以便他们可以验证故障是否由不受支持的模块引起。

改进的 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中的新流日志模块为 TCP/UDP 连接提供了与以前版本的 HTTP 连接相同类型的访问日志记录。 您现在可以记录Stream模块处理的每个 TCP/UDP 会话,检查数据速率、负载平衡决策、错误条件等。 在调试或审核 TCP 或 UDP 事务时,这是一项至关重要的功能。

Stream 模块公开了大量的变量,所有变量都可以被记录下来。 您可以按照以下方式使用变量来自定义默认日志格式:

改进的 PROXY 协议支持

此版本通过允许 NGINX Plus 接受使用 PROXY 协议增强的 TCP 连接,使我们对 TCP 连接的PROXY协议的支持更加全面。

此功能提高了您使用 NGINX Plus 管理 TCP 连接的能力,因为您可以确定连接的真实源 IP 地址以用于日志记录或身份验证目的。

其他扩展状态指标

状态模块现在报告类别中的更多指标,包括处理的会话数量和各种错误条件的数量。

与流日志模块中的新access_log命令一起,附加指标让您可以更轻松地监控 TCP 和 UDP 服务的行为并检测何时出现意外错误率。

[编辑器 – Status 模块已被弃用,并由NGINX Plus API模块取代,该模块在NGINX Plus R13中引入。

GeoIP2 模块实现更好的地理定位

第三方GeoIP2 模块现已认证,并可供我们存储库中的 NGINX Plus 用户使用。 GeoIP2 模块使用 MaxMind GeoIP2 格式的数据库,该数据库提供本地化名称,并且比原始 GeoIP 模块使用的名称更丰富细节。

要获取新模块,请运行以下命令(适用于 Debian 和 Ubuntu):

$ apt-get 更新$ apt-get 安装 nginx-plus-module-geoip2

/etc/nginx/nginx.conf中的主(顶层)上下文中,为新安装的模块添加一个load_module指令:

有关 GeoIP2 模块的更多信息,请参阅官方 GitHub 页面

NGINX JavaScript 模块的增强功能

编辑器– 以下用例只是 NGINX JavaScript 模块的众多用例之一。 有关所有用例的列表,请参阅NGINX JavaScript 模块的用例

这篇文章已更新,使用重构的 session( s ) 对象作为 Stream 模块,该模块在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_filesmanager_thresholdmanager_sleep参数到proxy_cache_pathfastcgi_cache_pathscgi_cache_pathuwsgi_cache_path指令控制。

升级或尝试 NGINX Plus

如果您正在运行 NGINX Plus,我们鼓励您在方便时升级到 Release 11。 您将获得大量修复和改进,如果您需要提出支持单,它将帮助我们为您提供帮助。 您可以在客户门户上找到安装和升级说明。

笔记: 正如之前宣布的那样, NGINX Plus R11及更高版本不包含nginx-plus-extras包。 如果您仍在使用该软件包,则必须部署nginx-plus包并从 NGINX Plus 模块存储库动态加载所需的附加模块。

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


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