BLOG | NGINX

Anunciamos NGINX Plus R14

NGINX - Parte de F5 - horizontal, negro, tipo RGB
Miniatura de Liam Crilly
Liam Crilly
Publicado el 12 de diciembre de 2017

Nos complace anunciar que NGINX Plus Release 14 (R14) ya está disponible para nuestros suscriptores de NGINX Plus. NGINX Plus es el único balanceador de carga, caché de contenido y servidor web todo en uno. Se basa en NGINX de código abierto y agrega características exclusivas junto con un galardonado soporte las 24 horas . NGINX Plus R14 incluye nuevas mejoras de seguridad y agrupamiento.

Con NGINX Plus, puedes aplicar controles de acceso mediante tokens web JSON (JWT). NGINX Plus R14 agrega soporte para reclamos JWT anidados , de modo que puede otorgar o denegar acceso según la información de membresía del grupo anidada dentro de un JWT. La compatibilidad con autenticación JWT nativa, introducida por primera vez en NGINX Plus R10 , permite utilizar NGINX Plus como puerta de enlace de autenticación para sus API y aplicações.

Las características adicionales de NGINX Plus R14 incluyen:

  • Soporte de agrupamiento extendido (vista previa de la tecnología) : lo invitamos a probar una vista previa de la nueva funcionalidad para compartir información de estado entre las instancias NGINX Plus en un clúster. En la vista previa, se comparte el estado del método de persistencia de la sesión de aprendizaje persistente . En futuras versiones, ampliaremos la compatibilidad de agrupamiento a otras funciones de NGINX Plus.
  • Tamaños de claves JWT más largos : además de la compatibilidad con reclamos JWT anidados y datos de matriz, ahora se admiten tamaños de claves más largos (hasta 512 bits) para los algoritmos de firma JWT. Esto proporciona más seguridad y flexibilidad al validar JWT.
  • Almacén de clave-valor y API de transmisión : el potente almacén de clave-valor y la API introducidos en la versión 13 para aplicações HTTP se extienden a las aplicações TCP y UDP en el contexto de transmisión .
  • Mejoras en el módulo JavaScript de NGINX : Este módulo, que permite ejecutar código JavaScript en NGINX Plus, ahora ofrece compatibilidad con lenguajes adicionales para el objeto JSON. [Anteriormente, el módulo se llamaba nginScript]. Esto permite analizar y extraer información de las respuestas JSON recibidas de las API de backend de forma nativa y usar métodos similares a Node.js para acceder al sistema de archivos. El módulo ahora también proporciona seguimientos retrospectivos para una amplia gama de objetos de excepción y error cuando ocurren, para facilitar la depuración y la resolución de problemas.
  • Más funciones : NGINX Plus también cuenta con un panel de control de monitoreo de actividad en vivo actualizado, una nueva variable SSL y vaciado del servidor ascendente.

Cambios en el comportamiento

  • La API NGINX Plus se ha actualizado a la versión 2. Consulte la documentación de compatibilidad de API si está considerando utilizar las nuevas funciones de API de NGINX Plus.
  • Las API en los módulos Upstream-Conf y Status extendido (habilitadas con las directivas upstream_conf y status ) han quedado obsoletas a partir de NGINX Plus R13 . Han sido reemplazados por la nueva API NGINX Plus , que es utilizada por el panel de monitoreo de actividad en vivo actualizado incluido en R14.
  • NGINX Plus ahora está disponible para Ubuntu 17.10 (Artful Aardvark).
  • NGINX Plus ya no recibe soporte en Debian 7 (Wheezy).

Características detalladas de NGINX Plus R14

Mejoras de JWT

Los implementadores de API y microservicios están recurriendo al estándar JSON Web Token (JWT, pronunciado “jot”) por su simplicidad y flexibilidad. Un JWT es un medio compacto y altamente portátil para intercambiar información de identidad. Puede obtener JWT de varios emisores, incluidos Okta, OneLogin y soluciones locales. NGINX Plus puede luego otorgar o denegar el acceso dependiendo de si el usuario o el cliente API ha presentado o no un JWT válido.

NGINX Plus R14 agrega soporte para reclamos JWT anidados y datos de matriz, así como tamaños de clave más largos para algoritmos de firma JWT. Esto proporciona más flexibilidad y mayor seguridad al validar JWT.

Compatibilidad con reclamaciones JWT anidadas y datos de matriz

Una carga útil JWT puede contener información “anidada” adicional sobre el usuario, como la membresía del grupo, que se puede utilizar para autorizar el acceso a un recurso. Esto ayuda a evitar la necesidad de consultar una base de datos varias veces para autorizar las solicitudes de los usuarios.

Considere la siguiente carga útil JWT:

{ "exp": 1513429677,
"sub": "xample@example.com",
"aud": "nginx",
"attributes": {
"name": "Xavier Ample",
"habitación": "A123",
"depto": "Manifestaciones"
},
"grupos": [
"Administrador",
"Foobar",
"Bazpub"
]
}

En el JWT anterior, los atributos son un objeto de “reclamo anidado” y los grupos son una matriz. Puede utilizar el siguiente fragmento de configuración para pasar el valor del nombre del objeto de atributos al backend y para denegar el acceso a los usuarios que no estén en el grupo Administrador .

auth_jwt_claim_set $jwt_groups grupos; # El valor de la matriz se unirá como valores separados por comas auth_jwt_claim_set $jwt_real_name atributos nombre; # Este valor tiene dos niveles de profundidad

map $jwt_groups $isAdmin {
"~\bAdministrator\b" 1; # Aparece dentro de los límites de palabras (\b) de la lista CSV
default 0;
}

server {
list 443 ssl;
#ssl_*; # Configuración para la terminación SSL/TLS

auth_jwt "sitio cerrado";
auth_jwt_key_file jwk.json;

location / {
proxy_set_header X-RealName $jwt_real_name; # Pasar el nombre real como encabezado
proxy_set_header X-Subject $jwt_claim_sub; # Reclamaciones L1 configuradas automáticamente
proxy_pass http://my_backend;
}

location /admin {
if ( $isAdmin = 0 ) {
return 403; # Prohibido
}
proxy_pass http://my_backend;
}
}

Aquí hay más detalles sobre cómo funciona esta configuración:

  • Usando la directiva auth_jwt_claim_set , establecemos la variable NGINX $jwt_groups en la matriz de grupos definida en el JWT. Los valores de la matriz están separados por comas y asignados a $jwt_groups .
  • Utilizando la directiva de mapa , buscamos en la lista de grupos la palabra clave Administrador . Si está presente, el usuario se considera administrador y $isAdmin se establece en 1. De lo contrario, $isAdmin se establece en 0.
  • El bloque de ubicación de la URI /admin verifica la variable $isAdmin . Si es 0, NGINX devuelve el código de estado 403Prohibido volver al cliente.

Con NGINX Plus R14 , también puede crear variables a partir de reclamaciones JWT anidadas. Las variables se pueden colocar luego en encabezados HTTP antes de enviarlas a los servidores back-end.

En el ejemplo anterior, utilizamos la directiva auth_jwt_claim_set para establecer la variable NGINX $jwt_real_name en el valor del objeto de nombre dentro del reclamo de atributos . La directiva proxy_set_header establece el encabezado HTTP X-RealName en el valor del objeto de nombre y envía la solicitud a my_backend .

Para obtener más información sobre todas las directivas de configuración disponibles para usar para autenticar JWT con NGINX Plus, consulte la documentación de referencia .

Tamaños de clave más grandes para algoritmos de firma JWT

NGINX Plus R14 ahora admite claves de firma de 256 bits, 384 bits y 512 bits para una validación de firma más sólida y una integración más sencilla con productos de gestión de acceso (IAM) que utilizan claves de firma más largas de forma predeterminada. Las claves de firma más largas están disponibles para todos los algoritmos de firma compatibles:

  • HMAC con SHA-2 (“HS”)
  • RSA PKCS #1 con SHA-2 (“RS”)
  • Algoritmo de firma digital de curva elíptica (“ES”)

Por ejemplo, puede configurar NGINX Plus R14 para que solo acepte tokens web JSON firmados con el algoritmo RS512:

servidor { escucha 443 ssl;
#ssl_*; # Configuración para la terminación de SSL/TLS

auth_jwt "sitio cerrado";
auth_jwt_key_file jwk.json;

ubicación / {
if ( $jwt_header_alg != RS512 ) {
devuelve 401;
}
contraseña_de_proxy http://my_backend;
}
}

En este caso, NGINX Plus no procesa solicitudes si el JWT no se ha firmado con el algoritmo RS512 y devuelve el código de estado. 401No autorizado al cliente que emitió la solicitud.

Nota : El soporte de JWT es exclusivo de NGINX Plus.

Almacén de clave-valor y API para el módulo Stream

NGINX Plus R13 introdujo el módulo de almacenamiento de clave-valor para HTTP , que permite crear, modificar y purgar pares clave-valor en una o más zonas de memoria compartida sobre la marcha. Un gran caso de uso para la API de almacenamiento de clave-valor es usarlo con fail2ban para crear una lista de direcciones IP rechazadas dinámica .

NGINX Plus R14 agrega el módulo Key-Value Store para Stream , lo que hace que las mismas capacidades de pares clave-valor estén disponibles para aplicações TCP y UDP que para aplicaciones HTTP.

La reconfiguración dinámica del almacén de valores clave en el contexto de transmisión se implementa en NGINX Plus R14 como parte de la API de NGINX Plus .

Nota : El almacén de clave-valor y la API son exclusivos de NGINX Plus.

Mejoras en el módulo JavaScript de NGINX

El módulo JavaScript de NGINX (anteriormente llamado nginScript) es un lenguaje de programación basado en JavaScript para NGINX Plus. En NGINX Plus R14 , se han ampliado las capacidades de NGINX JavaScript para mejorar aún más la programabilidad. El paquete de módulo dinámico JavaScript NGINX actualizado proporciona las siguientes nuevas mejoras.

Compatibilidad con objetos JSON

El objeto JSON de JavaScript ahora está disponible como un objeto nativo en NGINX JavaScript. Esto proporciona una forma más conveniente de administrar estructuras de datos complejas y también permite que NGINX JavaScript analice y manipule las respuestas JSON recibidas de las API de backend.

El siguiente ejemplo de shell njs demuestra cómo analizar y extraer datos JSON utilizando la sintaxis de objeto incorporada.

$ Nueva Jerseynjscript interactivo

v.<Tab> -> Propiedades y métodos prototipo de v.
Escribe console.help() para más información

>> var my_data = '{"colors":[{"name":"rojo","fancy":"polvo de ladrillo"}, {"name":"azul","fancy":"rocío marino"}]}';
>> var mi_objeto = JSON.parse(mis_datos);
>> mi_objeto.colores[1].fancy;
Salpullido marino
>>

Acceso al sistema de archivos

Node.js, la implementación de JavaScript del lado del servidor más popular, proporciona métodos integrados para acceder al sistema de archivos del sistema operativo (JavaScript del lado del cliente no permite el acceso al sistema de archivos). Con NGINX Plus R14 , ahora puede usar los métodos del sistema de archivos Node.js en JavaScript de NGINX para leer y escribir archivos, lo que le permite personalizar el flujo de trabajo de entrega de su aplicação . Se permiten las siguientes operaciones:

  • Leer – fs.readFile , fs.readFileSync
  • Escribir – fs.writeFile , fs.writeFileSync
  • Anexar – fs.appendFile , fs.appendFileSync

Este ejemplo de shell JavaScript de NGINX muestra cómo se puede utilizar JavaScript de NGINX para leer el contenido de un archivo en una variable.

$ Nueva Jerseynjscript interactivo

v.<Tab> -> Propiedades y métodos prototipo de v.
Escribe console.help() para más información

>> var fs = require('fs');
>> var tz = fs.readFileSync('/etc/timezone');
>> tz
Europa/Londres
>>

Objetos de error y seguimientos retrospectivos

Para ayudar aún más a los desarrolladores con la depuración y la resolución de problemas, ahora está disponible una amplia gama de objetos de error:

  • Error
  • Error de evaluación
  • Error interno
  • Error de rango
  • Error de referencia
  • Error de sintaxis
  • Error de tipo
  • Error URIE

Además, NGINX JavaScript ahora proporciona seguimientos de errores y excepciones. La siguiente entrada del registro de errores muestra un seguimiento simple de una operación del sistema fallida.

12/12/2017 01:52:08 [error] 43441#43441: *10 excepción js: Error: No existe el archivo o directorio en nativo (nativo)
en mi_función (:1)
en principal (nativo)
, cliente: 127.0.0.1, servidor: , solicitud: "GET / HTTP/1.1", host: "localhost:80"

Descubra cómo empezar a utilizar NGINX JavaScript<.htmla> en nuestro blog.

Panel de control de NGINX Plus utilizando la API de NGINX Plus

NGINX Plus R13 introdujo la API NGINX Plus , que brinda acceso a monitoreo y métricas en tiempo real en formato JSON. En NGINX Plus R14 , el panel de monitoreo de actividad en vivo integrado ahora utiliza la API NGINX Plus , brindando más de 80 métricas de monitoreo al usuario en tiempo real.

Las API de reconfiguración dinámica y estado extendido utilizadas por el panel en versiones anteriores de NGINX Plus están obsoletas. Las API todavía están disponibles en esta versión y se incluirán en NGINX Plus R15 . Se eliminarán por completo con NGINX Plus R16 , por lo que le recomendamos que actualice sus configuraciones ahora.

La configuración para el panel obsoleto se ve así:

location /status { # OBSOLETO status; # OBSOLETO
# directivas que controlan el acceso, como 'permitir' y 'denegar'
}
location = /status.html { # OBSOLETO
root /usr/share/nginx/html; # OBSOLETO
}

Para migrar sus instancias NGINX Plus existentes al nuevo panel NGINX Plus, reemplace el fragmento anterior con este:

location /api { api write=on;
# Directivas que controlan el acceso, como 'permitir' y 'denegar'
}
location = /dashboard.html {
root /usr/share/nginx/html;
}

# Redirigir las solicitudes realizadas al panel anterior
location = /status.html {
return 301 /dashboard.html;
}

Como se muestra en los fragmentos, recomendamos encarecidamente que limite el acceso a la API, por ejemplo, con directivas de permitir y denegar . Asegúrese de migrar los controles de acceso existentes desde la ubicación /status a la ubicación /api .

Para obtener más información sobre la nueva API NGINX Plus , consulte el anuncio de NGINX Plus R13 .

Nota : El panel de control integrado es exclusivo de NGINX Plus.

Drenaje de servidores ascendentes en el archivo de configuración

Al desconectar un servidor, puede mejorar la experiencia del usuario al permitir que las sesiones existentes se completen y evitar que se establezcan nuevas. El servidor no se desconecta hasta que no queden sesiones activas. A esto se le llama vaciar el servidor. Puede hacer esto dinámicamente con la API NGINX Plus enviando una solicitud PATCH que incluya {"drain":true} al recurso API para el servidor relevante.

NGINX Plus R14 extiende esta funcionalidad a la configuración basada en archivos al proporcionar un parámetro de drenaje a la directiva del servidor ascendente.

upstream my_backend { servidor 10.0.0.1;
servidor 10.0.0.2;
servidor 10.0.0.3 drenaje;
}

Al recargar la configuración de NGINX Plus, el servidor ascendente con IP 10.0.0.3 pasa al modo de drenaje. Más tarde, puedes desmantelar por completo el servidor eliminando la directiva de servidor correspondiente o reemplazando el parámetro de drenaje con down .

Compatibilidad con agrupaciones para Sticky Learn (versión preliminar de la tecnología)

Con NGINX Plus R14 , nos complace anunciar una vista previa tecnológica de una próxima capacidad para compartir el estado en un clúster de instancias NGINX Plus. La vista previa de la tecnología implementa el método de aprendizaje continuo de persistencia de sesión para demostrar los beneficios de compartir datos de sesión que de otro modo serían administrados individualmente por cada instancia.

La vista previa de la tecnología se proporciona como un paquete instalable separado y está disponible a pedido. Comuníquese con su representante de ventas de NGINX para obtener acceso.

Notas:

  1. La funcionalidad de agrupamiento de aprendizaje fijo se encuentra en estado de vista previa y, por lo tanto, no es adecuada para su uso en producción. Si compartir el estado en un clúster es un requisito importante para su entorno, le recomendamos que pruebe la vista previa de la tecnología y brinde comentarios a NGINX sobre qué tan bien satisface sus necesidades.
  2. Los paquetes de vista previa de tecnología están disponibles para CentOS/RHEL/Oracle Linux 7, Debian 8 y 9, y Ubuntu 16.04, 16.10 y 17.10.

Nota : La compatibilidad con clústeres y la persistencia de sesiones de aprendizaje continuo son exclusivas de NGINX Plus.

Características adicionales

NGINX Plus R14 también incluye las siguientes mejoras:

  • Persistencia del estado del solucionador a través de recargas: una forma de reconfigurar dinámicamente el conjunto de servidores en un grupo ascendente es usar un nombre de host o dominio como parámetro para la directiva del servidor ; DNS resuelve el nombre periódicamente y NGINX Plus usa automáticamente el conjunto revisado de servidores (consulte la Guía de administración de NGINX Plus ). NGINX Plus ahora conserva los registros DNS del nombre de host o nombre de dominio durante una recarga de NGINX Plus. Anteriormente, el nombre debía volver a resolverse después de una recarga, lo que significa que las solicitudes que llegaban antes de que se completara la resolución no podían ser atendidas.
  • Nueva variable de certificado de cliente SSL: la variable $ssl_client_escaped_cert es una nueva variable NGINX incorporada que le proporciona una forma segura y conveniente de codificar sus certificados de cliente en un encabezado HTTP para que pueda enviarlos a sus aplicações de backend. La variable está codificada en URL.

Actualice o pruebe NGINX Plus

NGINX Plus R14 incluye capacidades de autenticación mejoradas para sus aplicações cliente, capacidades de agrupamiento adicionales, mejoras de JavaScript de NGINX y correcciones de errores notables . En particular, NGINX Plus R13 introdujo un error en los controles de salud activos por el cual un proceso de trabajo antiguo podría realizar controles de salud de manera indefinida. Esto se ha resuelto con NGINX Plus R14 .

Si está ejecutando NGINX Plus, le recomendamos encarecidamente que actualice a la versión 14 lo antes posible. Recibirá una serie de correcciones y mejoras, y la actualización ayudará a NGINX a ayudarlo cuando necesite generar un ticket de soporte. Las instrucciones de instalación y actualización 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 aún no ha probado NGINX Plus , le recomendamos que lo haga para aceleración web, equilibrio de carga y entrega de aplicação , o como un servidor web totalmente compatible con API de administración y monitoreo mejoradas. Puedes comenzar hoy de forma gratuita con una evaluación de 30 días . Vea usted mismo cómo NGINX Plus puede ayudarle a entregar y escalar sus aplicações.


"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.