TA的每日心情 | 郁闷 2023-7-24 16:10 |
---|
签到天数: 118 天 [LV.6]常住居民II
|
很高兴宣布推出NGINXPR28(R28)。NGINXP基于NGINX开源版构建而成,NGINXP是仅有一款将软件W服务器、负载均衡器、反向代理、内容缓存和API关集于一身的多合一产品。此外,我们不能忽视[url=http:///www.nginx-cn.net/resources/glossary/control-plane/]什么是控制平面[/url]给行业发展注入了新的活力,对于激活市场有着深远的意义。NGINX 已成为 F5, Inc 的一员,而 F5, Inc 则是当前全球热门的开源项目 NGINX 背后的公司。[align=center]https://www.nginx-cn.net/wp-content/uploads/2023/06/MJ7-1536x396-07.png[/align]
NGINXPR28的新增特性包括:
额外的TLS指标—NGINXPR28在系统范围、客户端和服务器端收集额外的TLS统计信息,可在对代理配置中的SSLTLS相关错误以及与客户端和上游服务器的连接进行故障排除时提供关键洞察。
NGINXP时活动监控仪表盘已更新,以显示新的SSL会话数据。
在云私有服务中支持PROXY协议2TLV—当您通过AWS、GCP和MA中的“私有服务”向外部客户端提供资源时,默认情况下,用PROXY协议2请求头中的类型长度值(TLV)向量表示的服务特定客户端标识符不会传递给后端服务。NGINXPR28引入了用于和上下文的模块,这些模块解码TLV并定义了一个用于将客户端标识符转发到后端服务的变量。
对粘性参数的变量支持—在NGINXPR28中,粘性指令的参数值可以是一个变量。这种改进有助于更轻松地管理流量并提高安全性。
此外,该版本还包括从NGINX开源版继承的新功能和漏洞修复,以及对NGINXJS模块的更新。
重要行为变更
注意:如果您不是从NGINXPR27升级至NGINXPR28,请务必查看公告博客中的“重要行为变更”部分,了解当前版本和比较新版本之间所有版本的嬗变过程。
平台支持的变更
支持的新操作系统和架构:
AL8和9(86_64,64)
A317(86_64,64)
OL9(86_64)
RL8和9(86_64,64)
不再支持的旧版操作系统:
D10,已于2022年8月停服(EOL)
以下旧版操作系统和架构已弃用并计划在NGINXPR29中移除:
A313,已于2022年11月1日停服
新增特性详情
额外的TLS指标
在对代理配置、上游服务器和客户端的TLS相关问题进行故障排查时,SSLTLS事件和错误的可观测性非常重要。自从在NGINXPR13中引入NGINXPAPI以来,NGINXP在系统范围内收集了个TLS指标:
—成功的SSL握手次数
_—SSL握手失败次数(不包括SSL握手后发生的证书验证失败)
_—SSL会话重用次数
在NGINXPR27及后续版本中,您可以为单个上游服务器和虚拟服务器配置个指标的集合。
NGINXPR28扩展了TLS指标集,为HTTP和S模块中的握手错误和证书验证失败提供了新的计数器(此处我们只提供了HTTP模块的示例,可用的S指标与之类似)。关于为单个上游服务器和虚拟服务器配置指标集的详细信息,请参见NGINXPR27公告博客。
握手错误
NGINXPR28中新增了以下握手错误的计数器:
_—由于握手超时而导致的握手失败次数
__—由于握手双方之间缺少公共密码而导致的握手失败次数(由于不适用,因此未针对上游服务器连接进行收集)
__—由于双方之间缺乏共同协议而导致的握手失败次数
__—由于另一方拒绝NGINXP提供的证书并提供正确的警报消息而导致的握手失败次数
证书验证失败
当您配置证书验证时,证书验证失败现在会在API输出的新_部分报告:
对于使用__[HTTP][S]指令的客户端连接
对于使用这些协议特定指令的服务器连接:
__
__[HTTP][S]
__
当证书验证失败时,相应原因的指标将递增,连接将断开。但是请注意,基本握手计数器仍然是递增的,因为这些失败发生在握手成功之后。
证书验证失败的指标如下:
_—对等方提供了过期的证书
_—服务器的证书与主机不匹配(未针对客户端连接进行收集)
_—客户端未按要求提供证书(未针对上游服务器连接进行收集)
_—对等方提供了已吊销的证书
—其他证书验证失败的显式计数器
指标输出示例
以下是一组系统级HTTP连接的TLS指标示例:
$127001:80808
{
"":32,
"_":0,
"_":8,
"__":4,
"__":2,
"_":0,
"__":0,
"_":{
"_":0,
"_":2,
"_":1,
"_":2,
"":1
}
}
下面是一组客户端和HTTP虚拟服务器9之间连接的指标示例(如前所述,对于此类连接,不会收集_计数器):
$127001:80808_9
{
"":{
"":0,
"_":0,
"_":1,
"__":0,
"__":1,
"_":0,
"__":0,
"_":{
"_":0,
"_":0,
"_":0,
"":0
}
}
}
下面是2上游组中服务器的HTTP连接的一组指标示例(如前所述,对于此类连接,不收集_和__计数器):
$127001:808082
{
"":[
{
"":0,
"":"127001:8082",
"":"127001:8082",
"":{
"":1,
"_":0,
"_":0,
"__":0,
"_":0,
"__":0,
"_":{
"_":1,
"_":0,
"_":0,
"":0
}
},
}
],
}
NGINXP仪表盘显示扩展的TLS指标
对于NGINXPR28和更高版本,时活动监控仪表盘显示上述新的TLS指标。此屏幕截图显示了客户端连接的指标。要查看新指标,请将鼠标悬停在SSL>H列的值上,如图所示。
云私有服务中的PROXY协议2TLV支持
大领先的云服务提供商—AWS(AWS)、GCP(GCP)和MA—都提供了一种“私有服务”,您可以让外部客户端访问您的服务,而需在公共互联上公开这些服务。每个服务都使用一个客户端标识符,该标识符用PROXY协议2请求头中的类型长度值(TLV)向量表示。服务特定标识符包括:
AWSPL–PP2_SUBTYPE_AWS_VPCE_ID
GCPPSC–CI
MAPL–PP2_SUBTYPE_AZURE_PRIVATEENDPOINT_LINKID
默认情况下,这些客户端标识符不会传递给后端服务。NGINXPR28引入了用于和上下文的模块—_____和_____—这些模块解码TLV并定义了一个用于将标识符转发到后端服务的变量。
有关NGINXP如何使用PROXY协议获取IP地址和其他客户端信息的一般信息,请参阅《NGINXP管理指南》中的“接受PROXY协议”。
AWS的PROXY协议2支持
在AWS中,通过虚拟私有云(VPC)端点服务来自客户端的流量的源IP地址是络负载均衡器节点的专用IP地址。如果后端应用需要客户端的真IP地址和其他标识符,则可以从PROXY协议2请求头中获取这些标识符。
在AWS中,自定义TLV向量在PROXY协议2请求头PP2_SUBTYPE_AWS_VPCE_ID中解码端点的VPCID。(更多信息请参见AWS文档。)
字段
长度(八位字节)
描述
类型
1
PP2_TYPE_AWS(0EA)
长度
2
值的长度
值
1
PP2_SUBTYPE_AWS_VPCE_ID(001)
不等(值长度减1)
端点的ID
NGINXPR28解码TLV,并将端点ID传递给$_____变量中的后端应用。
注意:在引用$_____变量的块中,还必须在[HTTP][S]指令中包含_参数。例如,请参见下面__2的第8行。
这个AWS配置示例检查VPCID是否可以接受,如果可以,则将其作为_指令的第二个参数传递给后端应用:
{
$_____$___{
"12341234"0;
"12345678"0;
1;
}
{
127001:8080_;
{
($___){
401;
}
_X-AWS-VPC-LINK-ID$_____;
_:;
}
}
{
127001:8081;
}
}
GCP的PROXY协议2支持
在GCPPSC中,来自客户端的流量的源IP地址是“服务提供商的VPC络中某个PSC子中的地址”。如果后端应用需要客户端的真IP地址和其他标识符,则可以从PROXY协议2请求头中获取这些标识符。
在GCP中,自定义TLV矢量对PROXY协议2请求头CI中的仅有(当时)连接ID进行编码。(更多信息请参见GCP文档。)
字段
长度(字节)
描述
类型
1
0E0(PP2_TYPE_GCP)
长度
2
08(8字节)
值
8
按络顺序排列的8字节CI
NGINXPR28解码TLV,并将CI的值传递给$_____变量中的后端应用。
注意:在引用$_____变量的块中,还必须在[HTTP][S]指令中包含_参数。例如,请参见上面__2的第8行。
MA的PROXY协议2支持
在MAPL中,来自客户端的流量的源IP地址是“使用从提供商的虚拟络分配的NATIP[地址]在服务提供商端转换的络地址(NAT)”。如果后端应用需要客户端的真IP地址和其他标识符,则可以从PROXY协议2请求头中获取这些标识符。
在A中,自定义TLV矢量在PROXY协议2请求头PP2_SUBTYPE_AZURE_PRIVATEENDPOINT_LINKID中编码客户端的LID。(更多信息请参见A文档。)
字段
长度(八位字节)
描述
类型
1
PP2_TYPE_AZURE(0EE)
长度
2
值的长度
值
1
PP2_SUBTYPE_AZURE_PRIVATEENDPOINT_LINKID(001)
4
(4字节)表示专用端点的LINKID。以小端格式-编码。
NGINXPR28解码TLV并将LID传递给$_____变量中的后端应用。
注意:在引用$_____变量的块中,还必须在[HTTP][S]指令中包含_参数。例如,请参见上面__2的第8行。
粘性C参数的变量支持
在以前的NGINXP版本中,粘性指令的参数可以接受个静态值(、和)。在NGINXPR28中,该值也可以是一个变量。
默认情况下(没有参数),NGINX不会将SS属性注入。当参数为变量时,结果取决于变量在运行时的解析方式:
对于一个标准值(、和),NGINX将SS属性集注入该值
对于一个空值(""),NGINX不注入SS属性
对于表示配置错误的任何其他值,NGINX将SS属性集注入S(比较安全的设置)
此示例配置基于HTTPU-A请求头的值设置属性(这对于不支持SS属性的旧客户机很有用):
{
$__${
"--1""";
"--2""";
}
{
127001:8081;
=$=;
}
{
127001:8080;
_;
{
_:;
}
}
}
NGINXPR28的其他增强功能
从NGINX开源版继承的变更
NGINXPR28基于NGINX开源版1232,继承了自NGINXPR27发布以来(NGINX1230到1232)的功能变更和漏洞修复。变更和漏洞修复包括:
HTTP指令的新参数4=禁用4地址的查找。
当您使用__指令的参数为HTTP会话信息启用共享缓存时,TLS会话票据密钥现在会自动轮换。
记录几种TLSSSL错误的严重级别从降至。
有关从这些版本继承的新功能、变更和漏洞修复的完整列表,请参见变更文件。
NGINXJS模块的变更
NGINXPR28包含了NGINXJS模块()075到078版本中的变更和修复。我们在博文《使用077提高NGINX配置的模块化水平和可重用性》中重点介绍了一些比较重要的变更和修复。完整列表请参见《变更》文件。
升级或试用NGINXP
如果您是NGINXP用户,我们强烈建议您尽升级到NGINXPR28。除了上面提到的内容,您还将获得更多修复和改进,并且NGINX团队将会在您需要帮助时为您及时提供支持。
如果您还不是NGINXP用户,我们建议您立即申请试用—它具备强大的安全性,可充当负载均衡器、API关或者具备增强的监控和管理API的W服务器,并且NGINX团队将提供支持服务。请立即下载30天免费试用版。 |
|