We’re happy to announce the availability of NGINX Plus Release 28 (R28). Based on NGINX Open Source, NGINX Plus is the only all-in-one software web server, load balancer, reverse proxy, content cache, and API gateway.
Las características nuevas y mejoradas de NGINX Plus R28 incluyen:
Métricas TLS adicionales : NGINX Plus R28 recopila estadísticas TLS adicionales a nivel de todo el sistema, del lado del cliente y del servidor, lo que proporciona información fundamental para solucionar errores relacionados con SSL/TLS en la configuración del proxy y para las conexiones a clientes y servidores ascendentes.
El panel de monitoreo de actividad en vivo de NGINX Plus se actualiza para mostrar los nuevos datos de la sesión SSL.
http
y de flujo
que decodifican el TLV y definen una variable para reenviar el identificador del cliente a los servicios backend.samesite
parameter – In NGINX Plus R28, the value of the samesite
parameter to the sticky
cookie
directive can be a variable. This improvement allows for easier management of traffic and more security.Para completar el lanzamiento se incluyen nuevas características y correcciones de errores heredadas de NGINX Open Source y actualizaciones del módulo JavaScript de NGINX.
Nota: Si está actualizando desde una versión distinta a NGINX Plus R27 , asegúrese de consultar la sección Cambios importantes en el comportamiento en los blogs de anuncios de todas las versiones entre su versión actual y esta.
Nuevos sistemas operativos y arquitecturas compatibles:
Sistemas operativos más antiguos eliminados:
Sistemas operativos y arquitecturas más antiguos obsoletos y programados para su eliminación en NGINX Plus R29 :
Content-Length
y Transfer-Encoding
duplicados, así como las respuestas con encabezados Content-Length
o Transfer-Encoding
no válidos, o si tanto Content-Length
como Transfer-Encoding
están presentes en la respuesta.La observabilidad de eventos y errores de SSL/TLS es importante a la hora de solucionar problemas relacionados con TLS con la configuración del proxy, servidores ascendentes y clientes. Desde la introducción de la API NGINX Plus en NGINX Plus R13 , NGINX Plus ha recopilado tres métricas TLS a nivel de todo el sistema:
protocolos de enlace
: número de protocolos de enlace SSL exitososhandshakes_failed
: número de fallas de protocolo de enlace SSL (que no incluyen fallas de verificación de certificado que ocurren después del protocolo de enlace SSL)session_reuses
– Número de reutilizaciones de sesiones SSLEn NGINX Plus R27<.htmla> y versiones posteriores, puede configurar la recopilación de las tres métricas para servidores ascendentes individuales y servidores virtuales.
NGINX Plus R28 amplía el conjunto de métricas TLS con nuevos contadores para errores de protocolo de enlace y fallas de validación de certificados en los módulos HTTP y Stream (aquí proporcionamos ejemplos solo para módulos HTTP, pero las métricas Stream disponibles son similares). Para obtener detalles sobre cómo configurar la recopilación de métricas para servidores ascendentes individuales y servidores virtuales, consulte el blog de anuncio de NGINX Plus R27<.htmlspan> .
Los contadores para los siguientes errores de protocolo de enlace son nuevos en NGINX Plus R28 :
handshake_timeout
: Número de fallos de protocolo de enlace debido al tiempo de espera del protocolo de enlaceno_common_cipher
: número de fallas en el protocolo de enlace debido a la falta de un cifrado común entre las partes (no se recopila para conexiones a servidores ascendentes porque no corresponde)no_common_protocol
– Number of handshake failures due to lack of a common protocol between the partiespeer_rejected_cert
: Número de fallos de protocolo de enlace debido a que la otra parte rechazó el certificado presentado por NGINX Plus y proporcionó el mensaje de alerta adecuadoCertificate verification failures are now reported in the new verify_failures
section of API output when you configure certificate verification:
ssl_verify_client
[ HTTP ][ Stream ]Para conexiones a servidores con estas directivas específicas del protocolo:
grpc_ssl_verify
proxy_ssl_verify
[HTTP][Stream]verificación SSL de uwsgi
Cuando ocurre una falla en la verificación del certificado, se incrementa la métrica de la causa correspondiente y se interrumpe la conexión. Tenga en cuenta, sin embargo, que el contador de apretones de manos
básicos aún se incrementa porque estas fallas ocurren después de que el apretón de manos tiene éxito.
Las métricas para la validación de certificado fallida son:
expired_cert
– El par presentó un certificado vencidohostname_mismatch
– Server’s certificate doesn’t match the hostname (not collected for connections to clients)no_cert
– Client didn’t provide a certificate as required (not collected for connections to upstream servers)revoked_cert
– El par presentó un certificado revocadootro
– Contador explícito para otros fallos de verificación de certificadosA continuación se muestra un conjunto de métricas TLS de muestra para conexiones HTTP a nivel de todo el sistema:
$ curl 127.0.0.1:8080/api/8/ssl { "apretones de manos": 32, "reutilizaciones de sesión": 0, "el protocolo de enlace falló": 8, "sin_protocolo_común": 4, "sin_cifrado_común": 2, "tiempo de espera del protocolo de enlace": 0, "certificado rechazado por pares": 0, "verificar_fallos": { "sin_certificado": 0, "certificado_caducado": 2, "certificado revocado": 1, "nombre_de_host_discordancia": 2, "otro": 1 } }
Here’s a set of sample metrics for connections between clients and the HTTP virtual server s9 (as noted previously, the hostname_mismatch
counter is not collected for such connections):
$ curl 127.0.0.1:8080/api/8/http/server_zones/s9 { ... "ssl": { "apretones de manos": 0, "reutilizaciones de sesión": 0, "el protocolo de enlace falló": 1, "sin_protocolo_común": 0, "sin_cifrado_común": 1, "tiempo de espera del protocolo de enlace": 0, "certificado rechazado por pares": 0, "verificar_fallos": { "sin_certificado": 0, "certificado_caducado": 0, "certificado revocado": 0, "otro": 0 } } ... }
A continuación se muestra un conjunto de métricas de muestra para conexiones HTTP a servidores en el grupo ascendente u2 (como se señaló anteriormente, los contadores no_cert
y no_common_cipher
no se recopilan para dichas conexiones):
$ curl 127.0.0.1:8080/api/8/http/upstreams/u2 { "pares": [ { "id": 0, "servidor": "127.0.0.1:8082", "nombre": "127.0.0.1:8082", ... "ssl": { "apretones de manos": 1, "reutilizaciones de sesión": 0, "el protocolo de enlace falló": 0, "sin_protocolo_común": 0, "tiempo de espera del protocolo de enlace": 0, "certificado rechazado por pares": 0, "verificar_fallos": { "certificado_expirado": 1, "certificado revocado": 0, "nombre de host no coincidente": 0, "otro": 0 } }, ... } ], }
For NGINX Plus R28 and later, the live activity monitoring dashboard displays the new TLS metrics described above. This screenshot shows metrics for connections to clients. To view the new metrics, mouse over the value in the SSL > Handshakes failed column as shown.
The three leading cloud providers – Amazon Web Services (AWS), Google Cloud Platform (GCP), and Microsoft Azure – each offer a “private service” where you can enable external clients to access your services without exposing them on the public Internet. Each service makes use of a client identifier which is represented in a type-length-value (TLV) vector in a PROXY protocol v2 header. The service‑specific identifiers are:
PP2_SUBTYPE_AWS_VPCE_ID
pscConnectionId
PP2_SUBTYPE_AZURE_PRIVATEENDPOINT_LINKID
De forma predeterminada, estos identificadores de cliente no se pasan a los servicios backend. NGINX Plus R28 presenta módulos para los contextos http
y de flujo
: ngx_http_proxy_protocol_vendor_module y ngx_stream_proxy_protocol_vendor_module , que decodifican el TLV y definen una variable para reenviar el identificador a los servicios backend.
Para obtener información general sobre cómo NGINX Plus utiliza el protocolo PROXY para obtener direcciones IP y otra información sobre los clientes, consulte Aceptación del protocolo PROXY en la Guía de administración de NGINX Plus.
En AWS, la dirección IP de origen del tráfico que proviene de los clientes a través de un servicio de punto final de nube privada virtual (VPC) es la dirección IP privada del nodo Network Load Balancer. Si la aplicação backend requiere las direcciones IP reales y otros identificadores para los clientes, se pueden obtener de los encabezados del protocolo PROXY v2.
En AWS, un vector TLV personalizado codifica el ID de VPC del punto final en el encabezado del protocolo PROXY v2 PP2_SUBTYPE_AWS_VPCE_ID
. (Para obtener más información, consulte la documentación de AWS ).
Campo | Longitud (octetos) | Descripción |
---|---|---|
Tipo | 1 | PP2_TYPE_AWS ( 0xEA ) |
Longitud | 2 | La longitud del valor |
Valor | 1 | PP2_SUBTYPE_AWS_VPCE_ID ( 0x01 ) |
Varies (value length minus 1) | El ID del punto final |
NGINX Plus R28 decodifica el TLV y pasa el ID del punto final a las aplicações backend en la variable $proxy_protocol_tlv_aws_vpce_id
.
Nota: En el bloque del servidor
donde hace referencia a la variable $proxy_protocol_tlv_aws_vpce_id
, también debe incluir el parámetro proxy_protocol
en la directiva listen
[ HTTP ][ Stream ]. Para ver un ejemplo, consulte la línea 8 de proxy_protocol_v2.conf justo debajo.
This sample configuration for AWS checks that the VPC ID is acceptable and if so passes it to the backend application as the second parameter to the add_header
directive:
En GCP Private Service Connect, la dirección IP de origen del tráfico proveniente de los clientes es una “dirección en una de las subredes de Private Service Connect en la red VPC del productor de servicios”. Si la aplicação backend requiere las direcciones IP reales y otros identificadores para los clientes, se pueden obtener de los encabezados del protocolo PROXY v2.
En GCP, un vector TLV personalizado codifica la ID de conexión única (en ese momento) en el encabezado del protocolo PROXY v2 pscConnectionId
. (Para obtener más información, consulte la documentación de GCP ).
Campo | Length (Bytes) | Descripción |
---|---|---|
Tipo | 1 | 0xE0 (PP2_TYPE_GCP ) |
Longitud | 2 | 0x8 (8 bytes) |
Valor | 8 | El pscConnectionId de 8 bytes en orden de red |
NGINX Plus R28 decodifica el TLV y pasa el valor de pscConnectionId
a las aplicações backend en la variable $proxy_protocol_tlv_gcp_conn_id
.
Note: In the server
block where you reference the $proxy_protocol_tlv_gcp_conn_id
variable, you must also include the proxy_protocol
parameter to the listen
[HTTP][Stream] directive. For an example, see line 8 of proxy_protocol_v2.conf above.
En Microsoft Azure Private Link, la dirección IP de origen para el tráfico proveniente de los clientes es la “dirección de red traducida (NAT) del lado del proveedor de servicios que utiliza la dirección IP NAT asignada desde la red virtual del proveedor”. Si la aplicação backend requiere las direcciones IP reales y otros identificadores para los clientes, se pueden obtener de los encabezados del protocolo PROXY v2.
En Azure, un vector TLV personalizado codifica el LinkID del cliente en el encabezado del protocolo PROXY v2 PP2_SUBTYPE_AZURE_PRIVATEENDPOINT_LINKID
. (Para obtener más información, consulte la documentación de Azure ).
Campo | Longitud (octetos) | Descripción |
---|---|---|
Tipo | 1 | PP2_TYPE_AZURE ( 0xEE ) |
Longitud | 2 | Length of value |
Valor | 1 | PP2_SUBTYPE_AZURE_PRIVATEENDPOINT_LINKID ( 0x01 ) |
4 | UINT32 (4 bytes) que representa el LINKID del punto final privado. Codificado en formato little-endian. |
NGINX Plus R28 decodifica el TLV y pasa el LinkID a las aplicações backend en la variable $proxy_protocol_tlv_azure_pel_id
.
Nota: En el bloque del servidor
donde hace referencia a la variable $proxy_protocol_tlv_azure_pel_id
, también debe incluir el parámetro proxy_protocol
en la directiva listen
[ HTTP ][ Stream ]. Para ver un ejemplo, consulte la línea 8 de proxy_protocol_v2.conf más arriba.
samesite
En versiones anteriores de NGINX Plus, se aceptaban tres valores estáticos ( strict
, lax
y none
) para el parámetro samesite
de la directiva de cookies
adhesivas
. En NGINX Plus R28 , el valor también puede ser una variable.
De forma predeterminada (no hay ningún parámetro SameSite
), NGINX no inyecta el atributo SameSite
en la cookie. Cuando el parámetro samesite
es una variable, el resultado depende de cómo se resuelve la variable en tiempo de ejecución:
estricto
, laxo
y ninguno
), NGINX inyecta el atributo SameSite
establecido en ese valor.""
) – NGINX does not inject the SameSite
attributeSameSite
establecido en Estricto
(la configuración más segura).This sample configuration sets the samesite
attribute based on the value of the HTTP User-Agent
header (this is good for legacy clients that don’t support the SameSite
attribute):
NGINX Plus R28 is based on NGINX Open Source 1.23.2. and inherits functional changes and bug fixes made since NGINX Plus R27 was released (in NGINX 1.23.0 through 1.23.2). Changes and bug fixes include:
ipv4=off
de la directiva de resolución
HTTP deshabilita la búsqueda de direcciones IPv4.shared
en la directiva ssl_session_cache
, las claves de ticket de sesión TLS ahora se rotan automáticamente.crit
to info
.Para obtener la lista completa de nuevas características, cambios y correcciones de errores heredados de estas versiones, consulte el archivo CAMBIOS .
NGINX Plus R28 incorpora cambios y correcciones realizados en las versiones 0.7.5 a 0.7.8 del módulo JavaScript de NGINX (njs). Hemos destacado algunos de los más importantes en Haga que su configuración NGINX sea aún más modular y reutilizable con njs 0.7.7 en nuestro blog. Para obtener una lista completa, consulte el archivo Cambios .
If you’re running NGINX Plus, we strongly encourage you to upgrade to NGINX Plus R28 as soon as possible. You’ll also pick up several additional fixes and improvements, and it will help NGINX to help you when you need to raise a support ticket.
Si aún no ha probado NGINX Plus, le recomendamos que lo haga por cuestiones de seguridad, equilibrio de carga y puerta de enlace de API, o como servidor web totalmente compatible con API de administración y monitoreo mejoradas. Puede comenzar hoy con una prueba gratuita de 30 días .
"Esta publicación de blog puede hacer referencia a productos que ya no están disponibles o que ya no reciben soporte. Para obtener la información más actualizada sobre los productos y soluciones F5 NGINX disponibles, explore nuestra familia de productos NGINX . NGINX ahora es parte de F5. Todos los enlaces anteriores de NGINX.com redirigirán a contenido similar de NGINX en F5.com.