BLOG | NGINX

Anunciamos NGINX Plus R13

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

Nos complace anunciar que NGINX Plus Release 13 (R13) ahora está disponible como una actualización gratuita para todos los suscriptores de NGINX Plus. NGINX Plus es un servidor web combinado, balanceador de carga y caché de contenido construido sobre NGINX de código abierto. NGINX Plus R13 incluye nuevas características centradas en implementaciones dinámicas, capacidades de depuración mejoradas y seguridad y rendimiento mejorados.

NGINX Plus R13 presenta soporte para:

  • Una nueva API NGINX Plus : realice una configuración dinámica y obtenga métricas de estado extendidas en un único punto final consolidado; la API también agrega soporte para almacenes de valores clave.
  • Duplicación de solicitudes : envía una copia de todo el tráfico entrante a un servidor dedicado, donde puedes monitorear, inspeccionar y registrar el tráfico de aplicação sin afectar el rendimiento de los servidores de producción.
  • Mejoras del módulo JavaScript de NGINX : amplíe NGINX Plus con configuración programática mediante el módulo JavaScript de NGINX, nuestra implementación personalizada de JavaScript. [Anteriormente, el módulo se llamaba nginScript]. El nuevo shell interactivo de njs proporciona una consola que muestra todos los objetos integrados para JavaScript. Estos objetos se pueden investigar más a fondo para exponer los métodos y primitivos disponibles para cada objeto.
  • Herramienta de compilación para módulos dinámicos : utilice nuestra nueva herramienta de compilación para crear paquetes instalables para los numerosos módulos de terceros disponibles para NGINX y NGINX Plus.

Otras mejoras incluyen mejoras en el método de aprendizaje continuo para la persistencia de sesiones, soporte para trailers HTTP y un nuevo módulo dinámico de terceros para sustituciones HTTP.

Cambios en el comportamiento

  • Módulos obsoletos : Las API anteriores para el estado extendido y la configuración dinámica de grupos ascendentes (los módulos Estado y Configuración ascendente ) han quedado obsoletas y se han reemplazado por la API unificada de NGINX Plus . Estas API obsoletas se seguirán incluyendo con NGINX Plus durante un mínimo de 6 meses, junto con la nueva API de NGINX Plus . Estas API obsoletas se eliminarán en una futura versión de NGINX Plus.
  • Directiva eliminada : la directiva sticky_cookie_insert se ha eliminado en NGINX Plus R13 y quedó obsoleta en NGINX Plus R2.
  • Módulos dinámicos de terceros : los módulos dinámicos instalados desde el repositorio NGINX se actualizan automáticamente a R13. Cualquier módulo de terceros (es decir, módulos no incluidos en el repositorio oficial de NGINX ) debe volver a compilarse con NGINX Open Source 1.13.4 para seguir funcionando con NGINX Plus R13. Para obtener más información, consulte la Guía de administración de NGINX Plus .
  • La directiva en el módulo ModSecurity ya no es compatible : la directiva SecRequestBodyInMemoryLimit para ModSecurity ya no es compatible. Los clientes pueden eliminar esta directiva de forma segura, porque el módulo ModSecurity obedece el manejo del cuerpo de la solicitud definido por la configuración de NGINX.

    [ Editor – El módulo WAF NGINX ModSecurity para NGINX Plus dejó de venderse oficialmente el 1 de abril de 2022 y su transición al fin de su vida útil será efectiva el 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.]

  • Se eliminó el soporte para versiones de SO al final de su vida útil : NGINX Plus ya no es compatible con CentOS 5.10+, Red Hat Enterprise Linux 5.10+, Oracle Linux 5.10+, Ubuntu 12.04 LTS o Ubuntu 16.10.

Características detalladas de NGINX R13

API de NGINX Plus

NGINX Plus R13 incluye una nueva API REST unificada bajo un único punto final. Las versiones anteriores de NGINX Plus incluían API independientes de Upstream Conf y Extended Status . La nueva API combina la funcionalidad de ambos y también admite el nuevo módulo Almacén de clave-valor en una variedad de casos de uso para la configuración dinámica (que se analizan en la sección Almacén de clave-valor a continuación).

Para habilitar la API NGINX Plus , incluya la nueva directiva api en un bloque de ubicación :

servidor { escucha 80;

ubicación /api {
api write=on;
# directivas que permiten el acceso solo a usuarios autorizados
}
}

De forma predeterminada, la API NGINX Plus proporciona acceso de solo lectura a los datos. Agregue el parámetro write=on a la directiva api para habilitar el acceso de lectura y escritura para que se puedan realizar cambios en los servidores ascendentes y en el nuevo módulo de almacenamiento de clave-valor . Recomendamos encarecidamente restringir el acceso a la API únicamente a usuarios autorizados, especialmente cuando el modo de lectura/escritura está habilitado.

Para ver todos los tipos de información disponibles desde el punto final de la API, ejecute este comando:

$ curl http://localhost:80/api/1/ ["nginx","procesos","conexiones","ssl","slabs","http","stream"]

Para mostrar detalles sobre un tipo específico de información, agregue la cadena apropiada al URI de la solicitud:

  • Conexiones : muestra métricas para las conexiones totales
  • http – Mostrar métricas para el tráfico HTTP y modificar la configuración ascendente de HTTP

    También hay dos “subtipos” bajo http :

    • http/server_zones – Muestra información sobre los servidores virtuales HTTP
    • http/upstreams – Muestra información sobre los grupos de servidores ascendentes HTTP y modifica su configuración
  • nginx – Muestra información general sobre NGINX
  • Procesos : muestra información sobre los procesos de trabajo de NGINX
  • losas : muestra información sobre la memoria compartida asignada por NGINX
  • ssl – Muestra métricas para clientes SSL/TLS en tiempo real
  • stream – Muestra métricas para el tráfico TCP/UDP y modifica la configuración de los grupos de servidores ascendentes TCP/UDP (en stream/upstreams )

Monitoreo de estado extendido

NGINX Plus informa más de 40 métricas exclusivas además de lo que está disponible en NGINX Open Source. Ahora puede acceder a estas métricas mediante la API de NGINX Plus . Utilice la API para acceder a las métricas importantes para usted.

A modo de ejemplo, agregue conexiones a la URI para generar una instantánea del estado de la conexión, que incluye la cantidad de conexiones de cliente aceptadas, activas, descartadas e inactivas.

$ curl http://localhost:80/api/1/connections {"aceptadas":3,"eliminadas":0,"activas":1,"inactivas":0}

Otro ejemplo: agregar ssl a la URI para generar una instantánea de las estadísticas del cliente SSL en tiempo real.

$ curl http://localhost:80/api/1/ssl {"apretones de manos":0,"apretones de manos_fallidos":0,"reutilizaciones_de_sesión":0}

Configuración dinámica de grupos de servidores ascendentes

En NGINX Plus R12 y versiones anteriores, podía usar la directiva upstream_conf para habilitar la configuración dinámica de grupos de servidores ascendentes existentes sin tener que volver a cargar NGINX Plus. Esta funcionalidad ahora está incorporada a la API NGINX Plus .

Este fragmento de configuración de NGINX Plus define dos servidores en el grupo ascendente llamado backend y habilita la API de NGINX Plus en /api :

backend ascendente { zona backends 64k;
servidor 10.10.10.2; 
servidor 10.10.10.4;
}

servidor {
escucha 80;
nombre_servidor www.example.org;

ubicación /api {
api write=on;
}
}

Para agregar un servidor al grupo backend , incluya la opción -d en una solicitud curl a /api/1/http/upstreams/backend/servers , con texto JSON que defina la dirección IP del nuevo servidor (aquí, 10.10.10.6). La opción -i significa que los encabezados HTTP están incluidos en la respuesta. (Puede omitir -X POST porque ese es el método predeterminado con -d , pero lo incluimos para mantener la coherencia con otros métodos).

$ curl -iX POST -d '{"server":"10.10.10.6"}' http://localhost/api/1/http/upstreams/backend/servers HTTP/1.1 201 Creado ...

Para obtener detalles sobre todas las opciones para configurar grupos ascendentes, consulte la documentación de referencia del módulo API NGINX Plus .

Almacén de clave-valor

NGINX Plus R13 presenta un nuevo módulo de almacenamiento clave-valor . Puede utilizar la API NGINX Plus para crear, modificar y eliminar pares clave-valor sobre la marcha en una o más zonas de memoria compartida “keyval”. El valor de cada par clave-valor se puede evaluar luego como una variable para que lo utilicen otras funciones de NGINX Plus.

Para agregar, modificar, leer y eliminar entradas en el almacén de valores clave, utilice los métodos HTTP POST , PATCH , GET y DELETE respectivamente. El almacén de valores clave proporciona una gran cantidad de soluciones de configuración dinámica para permitir la integración en tiempo real con sistemas externos.

Algunos ejemplos de casos de uso incluyen:

  • Lista de denegación de IP dinámica (consulte la Guía de administración de NGINX Plus )
  • Enrutamiento de URI a servidores backend
  • Administrar listas de URI permitidos por usuario
  • Administrar reglas de redireccionamiento (ver el siguiente ejemplo)

El siguiente fragmento de configuración utiliza el módulo Almacén de clave-valor para administrar las URL personalizadas de un sitio web.

keyval_zone zone=redirects:1M state=state/redirects.json; # Guardar pares clave-valor en el archivo keyval $uri $target zone=redirects; # $uri es la clave, $target es el valor

server {
list 80;

location /api {
api write=on; # Habilitar la API de NGINX Plus (proteger esta ubicación en entornos de producción)
}

if ($target) { # Verdadero cuando $uri existe en la zona keyval 'redirects'
return 301 $target; # Redirigir al cliente al valor coincidente de $uri
}

location / {
proxy_pass http://backend;
}
}

En la directiva keyval , la clave se establece en la URI de la máquina remota que emite la solicitud HTTP. Si $uri es una clave en el almacén de clave-valor, el valor asociado con la clave se asigna a una nueva variable llamada $target . Luego, si $target existe, NGINX Plus redirige al cliente al valor coincidente de $uri .

Para completar el almacén de valores clave con una URL personalizada inicial, enviamos los datos, codificados como JSON, a la URI de la API NGINX Plus .

$ curl -iX POST -d '{"/conf":"/conf2017"}' http://localhost/api/1/http/keyvals/redirects HTTP/1.1 201 Creado ...

Ahora los clientes que solicitan /conf son redirigidos a /conf2017 .

$ curl -i http://localhost/conf HTTP/1.1 301 Movido temporalmente Ubicación: http://localhost/conf2017

Puede utilizar el método PATCH para agregar más redirecciones de URL personalizadas al almacén de valores clave y modificar las entradas existentes de forma dinámica.

$ curl -iX PATCH -d '{"/conf":"/conf2018"}' http://localhost/api/1/http/keyvals/redirects HTTP/1.1 204 Sin contenido ...

Puede configurar varios almacenes de valores clave independientes utilizando la directiva keyval para definir una zona de memoria compartida diferente para cada uno. Para obtener más información, consulte la documentación de referencia del módulo Almacén de clave-valor .

Documentación de Swagger

La nueva API NGINX Plus viene con una especificación Swagger que se puede utilizar para explorar la API y comprender las capacidades de cada recurso. La documentación de Swagger está incluida con NGINX Plus y se puede acceder a ella en http:// nginx-host /swagger-ui/ .

La parte interactiva de la interfaz de usuario Swagger requiere que la API NGINX Plus esté habilitada, lo que se puede lograr descomentando el bloque de ubicación /api/ en el archivo conf.d/default.conf .

# Habilitar la ubicación de /api/ con el control de acceso adecuado para usar la API de NGINX Plus
#
#location /api/ {
# api write=on;
# allow 127.0.0.1;
# deny all;
#}

También puede explorar la documentación de la API de NGINX Plus en https://demo.nginx.com/swagger-ui/ .

Nota:  Toda la API de NGINX Plus , incluidas las métricas de estado extendidas, la configuración ascendente y el nuevo módulo de almacenamiento de clave-valor, es exclusiva de NGINX Plus.

Solicitar duplicación

Con NGINX Plus R13, puedes habilitar la duplicación de solicitudes HTTP. Con esta función, las solicitudes HTTP que se envían a un grupo ascendente se clonan y también se envían a un destino diferente. La solicitud original se procesa como de costumbre, pero se ignoran todas las respuestas de la solicitud clonada. Existen muchos casos de uso para la duplicación de solicitudes, entre ellos:

  • Integración con firewalls de aplicação web (WAF) cuando se implementa en modo de aprendizaje, por lo que se pueden analizar patrones de solicitud típicos sin afectar el tráfico de producción
  • Ajuste del rendimiento sin riesgos mediante tráfico de producción en vivo
  • Duplicar cargas de archivos en un servidor de respaldo para evitar la replicación del sistema de archivos entre servidores web

Habilitar la duplicación de solicitudes tiene un impacto insignificante en el rendimiento y el rendimiento general del sistema. El siguiente fragmento de configuración muestra cómo utilizar la nueva directiva de espejo para clonar solicitudes y pasarlas a un servidor ascendente separado.

ubicación / { espejo /mirror;
contraseña_de_proxy http://backend;
}

ubicación /mirror {
interno;
contraseña_de_proxy http://backend_de_prueba$uri_de_solicitud;
}

Las solicitudes se envían al grupo ascendente del backend para su procesamiento regular. También se clonan y se envían a un grupo ascendente separado llamado test_backend , conservando el URI de la solicitud original.

Nota:  La duplicación de solicitudes se lanzó inicialmente en NGINX Open Source 1.13.4.

Mejoras en el módulo JavaScript de NGINX

Desde que se volvió generalmente disponible en NGINX Plus R12 , el módulo JavaScript de NGINX (anteriormente llamado nginScript) continúa ampliándose con soporte para el lenguaje principal de JavaScript. Con esta versión, presentamos soporte para números hexadecimales (como 0x7b) y notación científica (como 512e10). También se han implementado métodos primitivos para la clase Object .

NGINX JavaScript ahora también ofrece un shell interactivo, invocado con el comando njs , para ayudar con el desarrollo del código NGINX JavaScript.

El siguiente fragmento de shell muestra cómo ingresar al shell interactivo JavaScript de NGINX, definir una expresión que produce una fecha aleatoria hasta 30 segundos en el futuro y calcular la suma de dos números.

$ njs interactivo njscript >> Fecha.ahora() + Math.round(Math.random()*30*1000); 1500976350968 >> 0x7b + 512e10; 5120000000123 >>

Para obtener más información, consulte la introducción a NGINX JavaScript<.htmla> en nuestro blog.

Nota:  NGINX JavaScript está disponible tanto para NGINX Open Source como para NGINX Plus.

Herramienta de creación de módulos dinámicos

NGINX 1.11.5 y NGINX Plus R11 introdujeron soporte para compilar módulos dinámicos independientemente del propio NGINX. Esto permite a los usuarios de NGINX y NGINX Plus utilizar las compilaciones oficiales de los repositorios de NGINX, Inc. y cargar solo los módulos dinámicos que necesitan.

Con NGINX Plus R13, proporcionamos una herramienta de compilación para compilar y empaquetar un módulo dinámico como un módulo instalable que preserva y respeta la dependencia entre él y la versión base de NGINX a la que está vinculado.

Para obtener detalles completos sobre la herramienta de compilación, consulte Creación de paquetes instalables para módulos dinámicos en nuestro blog.

Nota:  La herramienta de compilación está disponible tanto para NGINX Open Source como para NGINX Plus.

Persistencia de sesión más rápida y pegajosa

La persistencia de la sesión es una característica muy útil del equilibrio de carga de NGINX Plus que le permite enviar todas las solicitudes de un cliente en particular a un servidor. Hay varias formas de establecer la persistencia de la sesión; con el método “sticky learning”, NGINX Plus busca la presencia de una cookie específica y fija al cliente al mismo servidor cada vez que esa cookie se incluye en una solicitud.

Con NGINX Plus R13 ahora puedes establecer una sesión persistente tan pronto como el servidor ascendente haya enviado los encabezados de su respuesta, en lugar de esperar hasta que llegue la carga de respuesta completa. De esta forma, NGINX Plus puede enviar la sesión persistente al cliente lo antes posible. Incluya el nuevo parámetro de encabezado en la directiva sticky learn :

backends ascendentes { backends de zona 64k;
servidor 10.10.10.2;
servidor 10.10.10.4;

adherente aprendizaje crear=$upstream_cookie_sessionid
búsqueda=$cookie_sessionid
zona=sesiones_de_cliente:1m
encabezado;
}

El parámetro de encabezado es particularmente útil si una aplicação es propensa a errores y desea que el cliente reenvíe las solicitudes fallidas al mismo servidor ascendente.

Nota:  La persistencia de la sesión de aprendizaje continuo es exclusiva de NGINX Plus.

Características adicionales

NGINX Plus R13 presenta las siguientes características adicionales:

  • Tráilers HTTP : la directiva add_trailer permite agregar tráilers arbitrarios al final de las respuestas HTTP. El encabezado de respuesta del tráiler permite al remitente incluir campos adicionales al final de los mensajes fragmentados para proporcionar metadatos que pueden generarse dinámicamente mientras se envía el cuerpo del mensaje, como una verificación de integridad del mensaje o una firma digital.
  • Módulo dinámico de filtro de sustituciones : el módulo dinámico de la comunidad de filtro de sustituciones HTTP ahora es compatible y está incluido en nuestras distribuciones NGINX Plus. El módulo puede aplicar sustituciones de expresiones regulares y de cadenas fijas a los cuerpos de respuesta. Escanea el buffer de las cadenas de salida y hace coincidir la cadena línea por línea. También puede acceder al módulo en la página Módulos dinámicos .
  • Apagado elegante del trabajador : utilice la directivaworker_shutdown_timeout para establecer un tiempo de espera que permita que el apagado elegante de los procesos de trabajo se complete más rápidamente. Cuando expira el tiempo de espera después de recibir una señal de apagado o reinicio, NGINX Plus intenta cerrar todas las conexiones de cliente abiertas.

Actualice a R13 o pruebe NGINX Plus

Si está ejecutando NGINX Plus, le recomendamos encarecidamente que actualice a la versión 13 lo antes posible. Recibirá una serie de correcciones y mejoras, y nos servirá para ayudarlo si necesita generar un ticket de soporte. Las instrucciones de instalación y actualización se pueden encontrar 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 pruebe 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. Puede comenzar hoy de forma gratuita con una evaluación de 30 días y comprobar usted mismo cómo NGINX Plus puede ayudarle a ofrecer 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.