Nos complace anunciar que la decimoquinta versión de NGINX Plus, nuestro producto estrella, ya está disponible. Desde nuestro lanzamiento inicial en 2013 , NGINX Plus ha crecido enormemente, tanto en su conjunto de funciones como en su atractivo comercial. Ahora hay más de [ngx_snippet name='nginx-plus-customers'] clientes de NGINX Plus y [ngx_snippet name='number-sites'] usuarios de NGINX Open Source .
Basado en NGINX de código abierto, NGINX Plus es el único equilibrador de carga, caché de contenido, servidor web y puerta de enlace API todo en uno . NGINX Plus incluye características mejoradas exclusivas diseñadas para reducir la complejidad en la arquitectura de aplicaciones modernas, junto con un soporte galardonado.
NGINX Plus R15 presenta nuevo soporte para gRPC, inserción de servidor HTTP/2, soporte de agrupamiento mejorado, funcionalidad de puerta de enlace API mejorada y más:
Para completar el lanzamiento se incluyen más características nuevas , incluida una nueva variable ALPN, actualizaciones de múltiples módulos dinámicos y más.
upstream_conf
y status
, están obsoletas. Le recomendamos que verifique su configuración para estas directivas y convierta a la nueva directiva api
tan pronto como sea posible (para obtener detalles, consulte Anuncio de NGINX Plus R13 en nuestro blog). A partir de la próxima versión, NGINX Plus R16 , las API obsoletas ya no se enviarán.Con esta versión, NGINX Plus puede redirigir y equilibrar la carga del tráfico gRPC, que muchas organizaciones ya utilizan para la comunicación con microservicios. gRPC es un marco de trabajo de llamadas a procedimientos remotos (RPC) de código abierto y alto rendimiento, diseñado por Google para una comunicación entre servicios altamente eficiente y de baja latencia. gRPC utiliza HTTP/2, en lugar de HTTP 1.1, como mecanismo de transporte, ya que las características de HTTP/2 (control de flujo, multiplexación y transmisión de tráfico bidireccional con baja latencia) son ideales para conectar microservicios a escala.
El soporte para gRPC se introdujo en NGINX Open Source 1.13.10 y ahora está incluido en NGINX Plus R15 . Ahora puede inspeccionar y enrutar llamadas de métodos gRPC, lo que le permite:
Para obtener más información, consulte Presentación de la compatibilidad de gRPC con NGINX 1.13.10 en nuestro blog.
Las primeras impresiones son importantes y el tiempo de carga de la página es un factor crítico para determinar si los usuarios volverán a visitar su sitio web. Una forma de proporcionar respuestas más rápidas a los usuarios es mediante el envío de notificaciones push al servidor HTTP/2, lo que reduce la cantidad de RTT (tiempos de ida y vuelta, el tiempo necesario para una solicitud y una respuesta) que el usuario debe esperar.
El envío de servidores HTTP/2 fue una característica muy solicitada y esperada por la comunidad de código abierto NGINX, introducida en NGINX Open Source 1.13.9. Ahora incluido en NGINX Plus R15 , permite que un servidor envíe de forma preventiva datos que probablemente sean necesarios para completar una solicitud previa iniciada por el cliente. Por ejemplo, un navegador necesita una amplia gama de recursos (hojas de estilo, imágenes, etc.) para representar una página web, por lo que puede tener sentido enviar esos recursos inmediatamente cuando un cliente accede a la página por primera vez, en lugar de esperar a que el navegador los solicite explícitamente.
En el siguiente ejemplo de configuración, utilizamos la directiva http2_push
para preparar a un cliente con hojas de estilo e imágenes que necesitará para representar la página web de demostración :
Sin embargo, en algunos casos no es posible determinar el conjunto exacto de recursos que necesitan los clientes, lo que hace que no resulte práctico enumerar archivos específicos en el archivo de configuración de NGINX. En estos casos, NGINX puede interceptar los encabezados de enlace
HTTP y enviar los recursos que están marcados como precargados
en ellos. Para habilitar la intercepción de encabezados de enlace
, configure la directiva http2_push_preload
en activada
.
Para obtener más información, consulte Presentación de HTTP/2 Server Push con NGINX 1.13.9 en nuestro blog.
Configurar varios servidores NGINX Plus en un clúster de alta disponibilidad hace que sus aplicaciones sean más resistentes y elimina puntos únicos de falla en su pila de aplicación . La agrupación en clústeres NGINX Plus está diseñada para implementaciones de producción de misión crítica donde la resiliencia y la alta disponibilidad son primordiales. Existen muchas soluciones para implementar agrupaciones en clústeres de alta disponibilidad con NGINX Plus .
La compatibilidad con agrupaciones en clústeres se introdujo en versiones anteriores de NGINX Plus, proporcionando dos niveles de agrupación en clústeres:
nginx-sync
: garantiza que la configuración esté sincronizada en todos los servidores NGINX Plus.NGINX Plus R15 presenta un tercer nivel de agrupamiento: intercambio de estado durante el tiempo de ejecución, lo que le permite sincronizar datos en zonas de memoria compartida entre los nodos del clúster. Más específicamente, los datos almacenados en zonas de memoria compartida para la persistencia de la sesión Sticky Learn ahora se pueden sincronizar en todos los nodos del clúster utilizando el nuevo módulo zone_sync
para el tráfico TCP/UDP.
zone_sync
Al compartir el estado, no hay un nodo principal: todos los nodos son pares e intercambian datos en una topología de malla completa . Además, la solución de agrupamiento con intercambio de estados es independiente de la solución de alta disponibilidad para la resiliencia de la red. Por lo tanto, un clúster que comparte estados puede abarcar ubicaciones físicas.
Un clúster de intercambio de estados NGINX Plus debe cumplir tres requisitos:
zone_sync
, como se muestra a continuación:La directiva zone_sync
habilita la sincronización de zonas de memoria compartida en un clúster. La directiva zone_sync_server
identifica las otras instancias de NGINX Plus en el clúster. NGINX Plus admite el descubrimiento de servicios DNS para que los miembros del clúster puedan identificarse por nombre de host y la configuración sea idéntica para cada miembro del clúster.
La configuración mínima anterior carece de los controles de seguridad necesarios para proteger los datos de sincronización en una implementación de producción. El siguiente fragmento de configuración emplea varias de estas protecciones:
La primera característica compatible de NGINX Plus que utiliza datos de estado compartidos en un clúster es la persistencia de sesión Sticky Learn . La persistencia de la sesión significa que las solicitudes de un cliente siempre se reenvían al servidor que cumplió la primera solicitud del cliente, lo que es útil cuando el estado de la sesión se almacena en el backend.
En la siguiente configuración, la directiva sticky
learn
define una zona de memoria compartida llamada sessions . El parámetro de sincronización
permite compartir el estado de todo el clúster al indicarle a NGINX Plus que publique mensajes sobre el contenido de su zona de memoria compartida en los demás nodos del clúster.
Tenga en cuenta que para que la sincronización de datos de estado funcione correctamente, la configuración en cada nodo NGINX Plus del clúster debe incluir el mismo bloque ascendente
con la directiva sticky
learn
, así como las directivas que habilitan el módulo zone_sync
(descrito anteriormente ).
Nota : La compatibilidad con clústeres y la persistencia de sesiones Sticky Learn son exclusivas de NGINX Plus.
Muchas empresas utilizan soluciones de gestión de acceso (IAM) para administrar cuentas de usuario y proporcionar un entorno de inicio de sesión único (SSO) para múltiples aplicaciones. A menudo buscan extender el SSO a aplicaciones nuevas y existentes para minimizar la complejidad y los costos.
NGINX Plus R10 introdujo soporte para validar tokens OpenID Connect . En esta versión ampliamos esa capacidad para que NGINX Plus también pueda controlar el flujo del código de autorización para la autenticación con OpenID Connect 1.0 , comunicándose con el proveedor de identidad y emitiendo el token de acceso al cliente. Esto permite la integración con la mayoría de los principales proveedores de identidad, incluidos CA Single Sign-On (anteriormente SiteMinder), ForgeRock OpenAM, Keycloak, Okta, OneLogin y Ping Identity. La nueva capacidad ampliada también le permite:
La integración de OpenID Connect con NGINX Plus está disponible como una implementación de referencia en GitHub. El repositorio de GitHub incluye una configuración de muestra con instrucciones de instalación, configuración y ajuste para casos de uso específicos.
[ Editor : Los siguientes ejemplos son solo algunos de los muchos casos de uso del módulo JavaScript de NGINX. Para obtener una lista completa, consulte Casos de uso del módulo JavaScript NGINX .
El código de esta sección se actualiza de la siguiente manera para reflejar los cambios en la implementación de JavaScript de NGINX desde que se publicó originalmente el blog:
s
) para el módulo Stream, que se introdujo en NGINX JavaScript 0.2.4 .js_import
, que reemplaza la directiva js_include
en NGINX Plus R23 y posteriores. Para obtener más información, consulte la documentación de referencia del módulo JavaScript de NGINX : la sección Configuración de ejemplo muestra la sintaxis correcta para la configuración de NGINX y los archivos JavaScript.]
Con el módulo JavaScript de NGINX, njs (anteriormente nginScript), puede incluir código JavaScript dentro de su configuración de NGINX para que se evalúe en tiempo de ejecución, a medida que se procesan las solicitudes HTTP o TCP/UDP. Esto permite una amplia gama de casos de uso potenciales, como obtener un control más preciso sobre el tráfico, consolidar funciones de JavaScript en todas las aplicaciones y defenderse contra amenazas a la seguridad.
NGINX Plus R15 incluye dos actualizaciones importantes para njs: subsolicitudes y funciones hash .
Ahora puede emitir solicitudes HTTP simultáneas que sean independientes y asincrónicas con respecto a la solicitud del cliente. Esto permite una multitud de casos de uso avanzados.
El siguiente código JavaScript de ejemplo emite una solicitud HTTP a dos backends diferentes simultáneamente. La primera respuesta se envía a NGINX Plus para reenviarla al cliente y la segunda respuesta se ignora.
La directiva js_import
en la configuración NGINX Plus correspondiente lee el código JavaScript de lowest_wins.js . Todas las solicitudes que coinciden con la ubicación raíz ( / ) se pasan a la función sendFastest()
que genera subsolicitudes a las ubicaciones /server_one y /server_two . La URI original con los parámetros de consulta se pasa a los servidores back-end correspondientes. Ambas subsolicitudes ejecutan la función de devolución de llamada realizada
. Sin embargo, dado que esta función incluye r.return()
, solo la subsolicitud que se completa primero envía su respuesta al cliente.
Los módulos njs para el tráfico HTTP y TCP/UDP ahora incluyen una biblioteca de cifrado con implementaciones de:
Un ejemplo de caso de uso de funciones hash es agregar integridad de datos a las cookies de la aplicación . El siguiente ejemplo de código njs incluye una función signCookie()
para agregar una firma digital a una cookie y una función validateCookieSignature()
para validar las cookies firmadas.
La siguiente configuración de NGINX Plus utiliza el código njs para validar las firmas de cookies en solicitudes HTTP entrantes y devolver un mensaje de error al cliente si la validación falla. NGINX Plus envía la solicitud como proxy si la validación es exitosa o no hay ninguna cookie presente.
La negociación de protocolo de capa de aplicación (ALPN) es una extensión de TLS que permite que un cliente y un servidor negocien durante el protocolo de enlace TLS qué protocolo se utilizará para establecer la conexión, evitando viajes de ida y vuelta adicionales que podrían generar latencia y degradar la experiencia del usuario. El caso de uso más común para ALPN es actualizar automáticamente las conexiones de HTTP a HTTP/2 cuando tanto el cliente como el servidor admiten HTTP/2.
La nueva variable NGINX $ssl_preread_alpn_protocols
, introducida por primera vez en NGINX Open Source 1.13.10, captura la lista de protocolos anunciados por el cliente en su mensaje ClientHello
en la fase de prelectura de ALPN. Dada la siguiente configuración, un cliente XMPP puede presentarse a través de ALPN de modo que NGINX Plus enrute el tráfico XMPP al grupo ascendente xmpp_backend , el tráfico gRPC a grpc_backend y todo el resto del tráfico a http_backend , todo a través de un único punto final.
Para permitir que NGINX Plus extraiga información del mensaje ClientHello
y complete la variable $ssl_preread_alpn_protocols
, también debe incluir la directiva ssl_preread
on
.
Para obtener más información, consulte la documentación del módulo ngx_stream_ssl_preread
.
NGINX Plus admite la puesta en cola ascendente para que las solicitudes de los clientes no tengan que rechazarse inmediatamente cuando todos los servidores del grupo ascendente no estén disponibles para aceptar nuevas solicitudes.
Un caso de uso típico para la cola ascendente es proteger a los servidores back-end de la sobrecarga sin tener que rechazar solicitudes inmediatamente si todos los servidores están ocupados. Puede definir el número máximo de conexiones simultáneas para cada servidor ascendente con el parámetro max_conns
de la directiva del servidor
. Luego, la directiva de cola
coloca las solicitudes en una cola cuando no hay backends disponibles, ya sea porque han alcanzado su límite de conexión o porque han fallado una verificación de estado .
En esta versión, la nueva variable NGINX $upstream_queue_time
, introducida por primera vez en NGINX Open Source 1.13.9, captura la cantidad de tiempo que una solicitud pasa en la cola. La siguiente configuración incluye un formato de registro personalizado que captura varias métricas de tiempo para cada solicitud; las métricas luego se pueden analizar sin conexión como parte del ajuste del rendimiento. Limitamos la cantidad de solicitudes en cola para el grupo ascendente my_backend a 20. El parámetro de tiempo de espera
establece cuánto tiempo se mantienen las solicitudes en la cola antes de que se devuelva un mensaje de error al cliente (503
por defecto). Aquí lo establecemos en 5 segundos (el valor predeterminado es 60 segundos).
Para obtener más información, consulte la documentación de la directiva de cola
.
Ahora puedes deshabilitar el escape en el registro de acceso de NGINX Plus. El nuevo parámetro escape=none
de la directiva log_format
, introducido por primera vez en NGINX Open Source 1.13.10, especifica que no se aplica escape a caracteres especiales en las variables.
Nuestra implementación de referencia para autenticar usuarios mediante un sistema de autenticación LDAP se ha actualizado para abordar problemas y corregir errores. Compruébelo en GitHub .
Puede utilizar NGINX Plus como un proxy transparente incluyendo el parámetro transparent
en la directiva proxy_bind
. Los procesos de trabajo ahora pueden heredar la capacidad Linux CAP_NET_RAW
del proceso maestro, de modo que NGINX Plus ya no requiere privilegios especiales para proxy transparente.
Nota : Esta función se aplica únicamente a plataformas Linux.
Si un JWT incluye una afirmación basada en tiempo ( nbf
(no antes de la fecha), exp
(fecha de vencimiento) o ambas), la validación del JWT por parte de NGINX Plus incluye una verificación de que la hora actual esté dentro del intervalo de tiempo especificado. Sin embargo, si el reloj del proveedor de identidad no está sincronizado con el reloj de la instancia NGINX Plus, los tokens podrían expirar inesperadamente o parecer que comienzan en el futuro. Para establecer la desviación máxima aceptable entre los dos relojes, utilice la directiva auth_jwt_leeway
.
El módulo de terceros para configurar indicadores de cookies ahora está disponible como módulo dinámico Cookie-Flag en el repositorio NGINX y está cubierto por su acuerdo de soporte NGINX Plus. Puede utilizar su herramienta de gestión de paquetes para instalarlo:
$ apt-get install nginx-plus-module-cookie-flag # Ubuntu/Debian$ yum install nginx-plus-module-cookie-flag # Red Hat/CentOS
NGINX ModSecurity WAF , un módulo dinámico para NGINX Plus basado en ModSecurity 3.0, se ha actualizado con las siguientes mejoras:
libmodsecurity
ModSecurity-nginx
[ Editor – NGINX ModSecurity WAF oficialmente dejó de venderse el 1 de abril de 2022 y está en transición al fin de su vida útil a partir del 31 de marzo de 2024 . Para obtener más detalles, consulte F5 NGINX ModSecurity WAF está en transición al final de su vida útil<.htmla> en nuestro blog.]
NGINX Plus R15 incluye capacidades de autenticación mejoradas para sus aplicaciones cliente, capacidades de agrupamiento adicionales, mejoras de njs y correcciones de errores notables .
Si está ejecutando NGINX Plus, le recomendamos encarecidamente que actualice a la versión 15 lo antes posible. Recibirá una serie de correcciones y mejoras, y la actualización nos permitirá ayudarlo cuando necesite generar un ticket de soporte. Las instrucciones de instalación y actualización de NGINX Plus R15 están disponibles en el portal del cliente .
Revise atentamente las nuevas características y los cambios de comportamiento descritos en esta publicación del blog antes de continuar con la actualización.
Si no ha utilizado NGINX Plus , le recomendamos que lo pruebe para aceleración web, equilibrio de carga y entrega de aplicación , o como un servidor web totalmente compatible con API de administración y monitoreo mejoradas. Puede comenzar hoy mismo de forma gratuita con una evaluación gratuita de 30 días . Vea usted mismo cómo NGINX Plus puede ayudarle a entregar y escalar sus aplicaciones.
"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.