博客 | NGINX

宣布推出 NGINX Plus R22

NGINX-F5-horiz-black-type-RGB 的一部分
Liam Crilly 缩略图
利亚姆·克里利
2020 年 6 月 9 日发布

我们很高兴地宣布NGINX Plus Release 22(R22)现已推出。 NGINX Plus 基于 NGINX 开源,是唯一集负载均衡器、内容缓存、Web 服务器和 API 网关于一体的软件负载均衡器。 该版本的主要重点是监控和身份验证,以增强应用的粒度和弹性。

NGINX Plus R22 的新功能包括:

行为方面的重要变化

  • 不再支持旧版操作系统

    • Alpine Linux 3.8 不再受支持
    • 正如NGINX Plus R21<.htmla>所宣布的那样,NGINX Plus 不再适用于 32 位平台(i386 架构)

新功能详情

客户端证书的 OCSP 验证

NGINX Plus 支持相互 TLS,它使用客户端证书来验证连接客户端的身份并建立加密连接。 相互 TLS 为客户端的身份提供了高级别的保证,但管理撤销的证书可能会增加管理负担。 在线证书状态协议(OCSP) 通过验证客户端证书的状态来解决此问题。

您可以配置 NGINX Plus 使用 OCSP 检查 X.509 客户端证书的有效性,如RFC 6960所定义。

要启用 SSL 客户端证书的 OCSP 验证,请将新的ssl_ocsp指令与ssl_verify_client指令一起包含在内,以启用证书验证。

NGINX Plus 将 OCSP 请求发送到客户端证书中嵌入的 OCSP URI,除非您使用ssl_ocsp_responder指令定义不同的 URI。

要将 OCSP 响应缓存在所有工作进程共享的单个内存区域中,请包含ssl_ocsp_cache指令来定义区域的名称和大小。 除非 OCSP 响应中的nextUpdate值指定了不同的值,否则响应将缓存 1 小时。

客户端证书验证的结果可在$ssl_client_verify变量中找到,其中包括 OCSP 失败的原因。

如果客户端证书不受信任或 OCSP 响应无效,则 TLS 握手失败。 地位 代码 495 (SSL) 证书 错误) 返回并在错误日志中创建一个条目 错误 严重程度:

YYYY / MM / DD hh : mm : ss [错误] 31222#0: *5 请求证书状态时,OCSP 响应中的证书状态为“已撤销”,响应者: 127.0.0.1

OpenID Connect 增强功能

我们针对 NGINX Plus 的OpenID Connect 参考实现将 SSO 扩展到新旧应用,以最大限度地降低复杂性和成本。 该参考实现使用 NGINX Plus 功能和NGINX JavaScript 模块(njs) 的组合来与授权端点执行代码交换并从 IdP 接收 ID 令牌。 ID 令牌本身缓存在 NGINX Plus 键值存储中,并且不透明会话令牌被发送到客户端。 然后,客户端通过提供有效的会话令牌进行身份验证,NGINX Plus 在访问后端应用之前使用该令牌验证 ID 令牌。

此版本为 OIDC 参考实现带来了许多增强功能,以及两个重大变化:

  1. 该配置现在通过将入站请求中的适当输入变量传递到多个映射块来支持多个 IdP。 这种额外的灵活性减少了修改 OIDC 参考实现代码的需要。
  2. JavaScript 代码现在作为模块实现,以便它可以与同一主机上的其他 njs 解决方案共存,而无需在单个文件中管理所有 njs 代码。

以下是示例配置:

每个映射块允许多个值,以便可以支持多个 IdP 和身份验证参数(客户端机密、JWK 密钥文件、授权端点)。 这里我们使用$host变量作为输入参数,但您可以指定从请求标头派生的任何变量。

NGINX Plus API现在可以跟踪与 OpenID Connect 登录相关的活动,以帮助监控和排除故障。 有关 OpenID Connect 参考实现的更多信息,请参阅GitHub 存储库

速率和连接限制的实时仪表板图表

DDoS 和暴力密码猜测攻击是对您的应用的两大严重威胁。 您可以通过速率限制来减轻它们的影响——让 NGINX Plus 限制每个客户端在一定时间段内可以发出的请求数量。

NGINX Plus R20增加了对NGINX Plus API 的请求率连接限制的实时监控(在/api/ version /http/limit_reqs/api/ version /http/limit_conns端点)。 现在,信息显示在 NGINX Plus 实时活动监控仪表板上,其中累计计数以表格形式显示,时间戳计数以图表形式显示:

  • 请求速率限制指标显示在“HTTP 区域”选项卡上的“限制请求”表中
  • 连接限制指标显示在“TCP/UDP 区域”选项卡上的“限制连接”表中

该表包含由limit_req_zonelimit_conn_zone指令定义的每个区域的一行。 要显示图表,请单击行左端的图表图标。

扩展图表不断更新,并以堆积面积图的形式显示每个时间间隔的值。 您可以通过下列方式自定义显示的信息:

  • 选择要显示的时间范围: 1 分钟、5 分钟或 15 分钟
  • 将鼠标悬停在图表上可显示某个时间点的精确计数
  • 将鼠标悬停在图例区域中的统计类型上,可在图表中突出显示该统计信息
  • 单击图例区域中的统计类型可在显示和不显示之间切换
  • 左右拖动图表查看历史数据

在默认的仪表板更新间隔 1 秒下,每个图表存储大约 30 分钟的历史数据。 增加仪表板更新间隔(减少更新频率)会增加可用的历史数据量。 请注意,仪表板图表不是持久的,当您离开或重新加载选项卡时,历史数据将会丢失。

NGINX JavaScript 模块的增强功能

NGINX JavaScript 模块扩展了 NGINX Plus 的功能,以实现广泛的用例,包括更精细地控制流量、跨应用整合 JavaScript 功能以及防御安全威胁。 NGINX JavaScript 模块已更新为0.4.1并包括以下功能:

  • 新的js_import指令用于导入实现位置和变量处理程序的多个模块文件
  • 改进了标头支持,包括新的原始标头对象
  • 您可以在 njs 代码中使用TypeScript定义文件
  • 支持将外部值转换为原生 JavaScript 对象

以下代码和配置说明了如何使用新的r.rawHeadersIn对象来记录客户端在遇到错误时发送的精确标头集。[编辑器 – 这只是 NGINX JavaScript 模块的众多用例之一。 有关完整列表,请参阅NGINX JavaScript 模块的用例 ]

以下是404回复:

$ curl http://localhost/bogus $ tail --lines=1 /var/log/nginx/access_json.log {"response":{"timestamp":" YYYY - MM - DD T hh : mm : ss + TZ_offset ","status":404},"request":{"client":"127.0.0.1","uri":"/bogus","headers":[["Host","localhost:80"],["User-Agent","curl/7.64.1"],["Accept","*/*"]]}}

身份验证失败时延迟

为了减轻密码暴力攻击和撞库攻击等定时攻击,您可以让 NGINX Plus 在身份验证失败时延迟其响应。 新的auth_delay指令指定延迟,可应用于由Auth BasicAuth JWTAuth Request模块处理的身份验证请求。

升级或尝试 NGINX Plus

如果您正在运行 NGINX Plus,我们强烈建议您尽快升级到NGINX Plus R22 。 您还将获得一些额外的修复和改进,当您需要提出支持单时,它将帮助 NGINX 为您提供帮助。

如果您还没有尝试过 NGINX Plus,我们鼓励您尝试一下 – 为了安全、负载均衡和 API 网关,或者作为具有增强监控和管理 API 的完全支持的 Web 服务器。 您今天就可以开始享受30 天免费试用。 亲自了解 NGINX Plus 如何帮助您交付和扩展您的应用。


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