BLOG | NGINX

Anunciamos NGINX Plus R12

NGINX - Parte de F5 - horizontal, negro, tipo RGB
Miniatura de Owen Garrett
Owen Garrett
Publicado el 14 de marzo de 2017

[Editor: esta publicación se ha actualizado para hacer referencia a la API NGINX Plus , que reemplaza y deja obsoletos los módulos de estado y configuración dinámica separados discutidos en la versión original de la publicación].

Hoy nos complace anunciar que NGINX Plus R12 está disponible como una actualización gratuita para todos los suscriptores de NGINX Plus. NGINX Plus es una plataforma de distribución de aplicação de software de alto rendimiento que incluye un equilibrador de carga, un caché de contenido y un servidor web. NGINX Plus R12 es una versión importante con nuevas características centradas en la agrupación en clústeres, la personalización y la supervisión.

Para obtener más información sobre NGINX Plus R12, mire nuestro seminario web a pedido .

Los usuarios empresariales se beneficiarán de la nueva función de agrupamiento, que simplifica el proceso de gestión de clústeres de alta disponibilidad de servidores NGINX Plus. Todos los usuarios se beneficiarán del soporte oficial para nginScript, un lenguaje de scripting liviano y de alto rendimiento que está integrado directamente en la configuración de NGINX. Las mejoras en la supervisión y la instrumentación, el almacenamiento en caché y los controles de estado mejoran la confiabilidad y el rendimiento de las aplicações.

Otras mejoras incluyen autenticación de certificados de cliente para servicios TCP, la capacidad de inspeccionar campos personalizados en JWT de OAuth, compatibilidad con el formato WebP en el módulo Image-Filter y una serie de mejoras de rendimiento y estabilidad.

Alentamos a todos los suscriptores a actualizar a NGINX Plus R12 de inmediato para aprovechar las mejoras de rendimiento, funcionalidad y confiabilidad en esta versión. Antes de realizar la actualización, asegúrese de revisar los cambios de comportamiento que se enumeran en la siguiente sección.

Cambios en el comportamiento

NGINX Plus R12 introduce algunos cambios en el comportamiento predeterminado y en los aspectos internos de NGINX Plus que debes tener en cuenta al actualizar:

  • Formato de metadatos de caché : el formato del encabezado de metadatos de caché interno ha cambiado. Cuando actualiza a NGINX Plus R12, el caché en disco deja de ser válido y NGINX Plus actualiza automáticamente el caché según sea necesario. Las entradas de caché antiguas se eliminan automáticamente.
  • Variables “DN” de SSL : el formato de las variables $ssl_client_s_dn y $ssl_client_i_dn ha cambiado. La coma ( , ) ahora sirve como separador de campo en lugar de la barra diagonal ( / ) y se escapa según las RFC.2253 y4514 . Para continuar usando el formato X509_NAME_oneline con el separador de campo de barra diagonal, utilice las variables $ssl_client_s_dn_legacy y $ssl_client_i_dn_legacy .
  • Cola máxima de conexiones : la directiva de cola le dice a NGINX Plus que ponga en cola las conexiones a los servidores ascendentes si están sobrecargados . Como consecuencia de las optimizaciones de memoria y rendimiento en R12, la directiva de cola ahora debe aparecer en el bloque ascendente debajo de la directiva que especifica el algoritmo de equilibrio de carga ( hash , ip_hash , less_conn o less_time ).
  • Módulos dinámicos de terceros : los módulos dinámicos creados o certificados por NGINX, Inc. se proporcionan en nuestro repositorio. Cualquier módulo de terceros debe volver a compilarse con NGINX Open Source versión 1.11.10 para seguir funcionando con NGINX Plus R12. Consulte la Guía de administración de NGINX Plus para obtener más información.
  • Lanzamiento final para versiones del SO que alcanzaron el fin de su vida útil : Ubuntu ha anunciado el fin de la vida útil de Ubuntu 12.04 LTS y Red Hat ha anunciado el fin de la vida útil del soporte de la fase de producción de Red Hat Enterprise Linux 5.10+ ; ambos lanzamientos entraron en vigencia el 31 de marzo de 2017. NGINX Plus R12 es la última versión que incluirá paquetes y soporte para estas versiones del sistema operativo, así como para CentOS 5.10+ y Oracle Linux 5.10+. Para seguir recibiendo actualizaciones y soporte después de NGINX Plus R12, actualice a una versión de sistema operativo compatible.

Características detalladas de NGINX Plus R12

Uso compartido de configuración

Los servidores NGINX Plus a menudo se implementan en un clúster de dos o más instancias para fines de alta disponibilidad y escalabilidad. Esto le permite mejorar la confiabilidad de sus servicios al aislarlos del impacto de fallas del servidor y también escalar y manejar grandes volúmenes de tráfico.

NGINX Plus ya ofrece una forma compatible de distribuir el tráfico a través de un clúster en modo activo-pasivo o activo-activo . NGINX Plus R12 agrega un método adicional compatible para sincronizar la configuración en un clúster. Esta función de sincronización de configuración permite a un administrador configurar un “clúster” de servidores NGINX Plus desde una única ubicación. Estos servidores comparten un subconjunto común de su configuración.

La configuración de NGINX Plus se envía desde el servidor principal a los pares

A continuación se explica cómo sincronizar la configuración:

  1. Nominar uno o más nodos “primarios” en el clúster.
  2. Instale el nuevo paquete nginx-sync en los nodos principales.
  3. Aplicar cambios de configuración a un nodo principal.
  4. Invoque el proceso de sincronización de configuración, nginx-sync.sh , que está incluido en el paquete nginx-sync , para actualizar cada uno de los otros servidores en el clúster (los pares ). El proceso de sincronización realiza estos pasos en cada par:

    1. Envía la configuración actualizada al par a través de ssh o rsync .
    2. Verifica que la configuración sea válida para el par y la revierte si no lo es.
    3. Aplica la configuración si es válida y vuelve a cargar los servidores NGINX Plus en el par.

Esta capacidad es especialmente útil cuando NGINX Plus se implementa en un par de servidores tolerantes a fallas (o en un número mayor). Puede utilizar este método para simplificar la implementación confiable de la configuración dentro de un clúster o para enviar la configuración desde un servidor de prueba a un clúster de servidores de producción.

Para obtener instrucciones detalladas, consulte la Guía de administración de NGINX Plus .

Disponibilidad general del módulo JavaScript de NGINX

Con NGINX Plus R12, nos complace anunciar que el módulo JavaScript de NGINX ya está disponible como módulo estable tanto para NGINX Open Source como para NGINX Plus. [Anteriormente, el módulo se llamaba nginScript y en esta publicación se usan los nombres indistintamente]. nginScript es totalmente compatible con los suscriptores de NGINX Plus.

nginScript es una implementación de JavaScript única<.htmla> para NGINX y NGINX Plus, diseñada específicamente para casos de uso del lado del servidor y procesamiento por solicitud. Le permite ampliar la sintaxis de configuración de NGINX Plus con código JavaScript para implementar soluciones de configuración sofisticadas.

Con nginScript puedes registrar variables personalizadas usando lógica compleja, controlar la selección ascendente, implementar algoritmos de equilibrio de carga, personalizar la persistencia de la sesión e incluso implementar servicios web simples. Publicaremos instrucciones completas para algunas de estas soluciones en nuestro blog en las próximas semanas y agregaremos enlaces a ellas aquí a medida que estén disponibles.

En concreto, NGINX Plus R12 incluye las siguientes mejoras :

  • Fase de prelectura en el módulo Stream
  • Métodos matemáticos y constantes de ECMAScript 6
  • Métodos de cadena adicionales como endsWith , include , repeat , startsWith y trim
  • Ámbitos

Aunque nginScript es estable, se continúa trabajando para soportar aún más casos de uso y cobertura del lenguaje JavaScript. Obtenga más información en Cómo aprovechar el poder y la conveniencia de JavaScript para cada solicitud con el módulo JavaScript NGINX<.htmla> en nuestro blog.

Nuevas estadísticas

El monitoreo y la instrumentación en NGINX Plus son un valor agregado importante que le brinda información profunda sobre el rendimiento y el comportamiento de NGINX Plus y las aplicações ascendentes. Las estadísticas se proporcionan tanto a través de nuestro panel gráfico integrado como en formato JSON que se puede exportar a su herramienta de monitoreo favorita.

El panel de monitoreo de actividad en vivo de NGINX Plus con actualizaciones para la versión 12
El panel de monitoreo de actividad en vivo se actualiza para NGINX Plus R12

NGINX Plus R12 agrega una serie de mejoras: más información sobre el rendimiento (tiempo de respuesta) de los servidores con equilibrio de carga, conocimientos sobre el funcionamiento de los servicios TCP y UDP y una variedad de datos internos que ayudan a solucionar problemas para identificar problemas y ajustar NGINX Plus para optimizar el rendimiento.

Las nuevas estadísticas en NGINX Plus R12 incluyen:

  • Tiempo de respuesta del servidor ascendente : en NGINX Plus R11 y versiones anteriores, el tiempo de respuesta de los servidores ascendentes se calculaba solo cuando se utilizaba el algoritmo de equilibrio de carga de menor tiempo. A partir de NGINX Plus R12, el tiempo de respuesta se mide para todos los algoritmos y se informa tanto en los datos JSON como en el panel integrado.
  • Códigos de respuesta para conexiones ascendentes TCP/UDP en el panel gráfico : el módulo Stream para el equilibrio de carga TCP/UDP genera pseudocódigos de estado para identificar cómo se cerró una conexión (200 significa "éxito",502 significa “upstream no disponible”, etc.), reportándolos en la variable $status . NGINX Plus R12 agrega una serie de columnas al tablero para mostrar los recuentos de códigos de respuesta para servidores virtuales TCP y UDP, como los que ya se proporcionan para los servidores virtuales HTTP. Los códigos de estado pseudo también se pueden registrar para su integración con herramientas de análisis de registros existentes.
  • Información de la versión de NGINX Plus : para ayudar con la resolución de problemas, los datos JSON ahora informan el número de versión de NGINX Plus como nginx_build (por ejemplo, nginx-plus-r12 ) así como el número de versión de código abierto de NGINX como nginx_version (por ejemplo,1.11.10 ). El panel muestra ambos valores en el cuadro superior izquierdo de la pestaña principal.
  • Nombre de host ascendente : en los datos JSON, el campo de servidor identifica un servidor en un grupo ascendente por dirección IP y puerto. El nuevo campo de nombre informa el primer parámetro a la directiva del servidor en el bloque de configuración ascendente , que puede ser un nombre de dominio o una ruta de socket de dominio UNIX, así como una dirección IP y un puerto. En el panel, la columna Nombre más a la izquierda en las pestañas Upstreams y TCP/UDP Upstreams ahora informa el valor del campo de nombre en lugar del campo de servidor (que se informaba en NGINX Plus R11 y anteriores).

    La nueva métrica facilita la correlación de los datos JSON y el panel de control con sus servidores ascendentes si los define utilizando nombres DNS, particularmente nombres que se resuelven en múltiples direcciones IP.

  • Utilización de la zona de memoria compartida en datos de estado extendidos : las zonas de memoria compartida se configuran con un tamaño fijo y puede ser difícil seleccionar un tamaño que no sea demasiado grande (la memoria se asigna pero nunca se utiliza) ni demasiado pequeño (la memoria se agota y los elementos almacenados en caché se descartan).

    La nueva instrumentación en las métricas proporciona un informe interno detallado del uso de la memoria de cada zona compartida, lo que le permite monitorear el uso de la memoria y el soporte técnico de NGINX para brindar asesoramiento más informado sobre la optimización de la configuración de NGINX.

  • Escape compatible con JSON en el registro de acceso de NGINX Plus : algunas herramientas de análisis de registros modernas pueden ingerir de manera eficiente archivos de registro con formato JSON y pueden extraer información con mayor facilidad que a partir de archivos de registro sin formato. Puede definir una plantilla JSON en la directiva estándar log_format de NGINX Plus, y el nuevo parámetro de escape opcional para la directiva aplica un escape compatible con JSON para que las líneas de registro tengan el formato correcto.

Para obtener más información, consulte Monitoreo de actividad en vivo .

Almacenamiento en caché mejorado

NGINX Plus R12 mejora significativamente el motor de almacenamiento en caché NGINX Plus.

Sirva contenido obsoleto mientras se actualiza

NGINX Plus R12 agrega soporte para las extensiones Cache-Control definidas en RFC 5861 , stale-while-revalidate y stale-if-error . Ahora puede configurar NGINX Plus para respetar estas extensiones de control de caché y continuar sirviendo recursos vencidos desde el caché mientras los actualiza en segundo plano, sin agregar latencia a la solicitud del cliente. De manera similar, NGINX Plus puede servir recursos caducados desde el caché si el servidor ascendente no está disponible: una técnica para implementar patrones de disyuntores en aplicações de microservicios.

A menos que esté configurado para ignorar el encabezado Cache-Control , NGINX Plus respeta los temporizadores obsoletos de los servidores de origen que devuelven encabezados Cache-Control compatibles con RFC 5861, como en este ejemplo:

Control de caché: edad máxima = 3600 obsoleto mientras se revalida = 120 obsoleto si hay error = 900

Para habilitar la compatibilidad con las extensiones Cache-Control con actualización en segundo plano, incluya las directivas resaltadas:

proxy_cache_path /ruta/a/cache niveles=1:2 zona_claves=mi_caché:10m tamaño_máximo=10g inactivo=60m use_temp_path=off; servidor { # ... ubicación / { proxy_cache mi_cache; # Servir contenido obsoleto al actualizar proxy_cache_use_stale actualizando ; # Además, no bloquee la primera solicitud que activa la actualización # y realice la actualización en segundo plano proxy_cache_background_update on ; proxy_pass http://mi_subida; } }

La directiva de actualización proxy_cache_use_stale le indica a NGINX Plus que sirva la versión obsoleta del contenido mientras se actualiza. Si incluye solo esa directiva, el primer usuario que solicita contenido obsoleto paga la penalización por “error de caché”, es decir, no recibe el contenido hasta que NGINX Plus lo haya obtenido del servidor de origen y lo haya almacenado en caché. Los usuarios que posteriormente solicitan el contenido obsoleto mientras se está actualizando lo obtienen de la memoria caché inmediatamente, mientras que el primer usuario no obtiene nada hasta que se obtiene y se almacena en caché el contenido actualizado.

Con la nueva directiva proxy_cache_background_update , todos los usuarios, incluido el primer usuario, reciben el contenido obsoleto mientras NGINX Plus lo actualiza en segundo plano.

La nueva funcionalidad también está disponible en los módulos FastCGI , SCGI y uwsgi .

Solicitudes de rango de bytes

Una mejora adicional del motor de almacenamiento en caché permite que NGINX Plus omita el caché para solicitudes de rango de bytes que comienzan más de una cantidad configurada de bytes después del inicio de un archivo no almacenado en caché. Esto significa que, en el caso de archivos grandes, como contenido de video, las solicitudes de un rango de bytes en el archivo no agregan latencia a la solicitud del cliente. En versiones anteriores de NGINX Plus, el cliente no recibía el rango de bytes solicitado hasta que NGINX Plus recuperaba todo el contenido desde el inicio del archivo hasta el rango de bytes solicitado y lo escribía en la memoria caché.

La nueva directiva proxy_cache_max_range_offset especifica el desplazamiento desde el comienzo del archivo más allá del cual NGINX Plus pasa una solicitud de rango de bytes directamente al servidor de origen y no almacena en caché la respuesta. (La nueva funcionalidad también está disponible en los módulos FastCGI , SCGI y uwsgi ).

proxy_cache_path /ruta/a/caché niveles=1:2 zona_claves=mi_caché:10m tamaño_máximo=10g inactivo=60m use_temp_path=off; servidor { ubicación / { proxy_cache mi_caché; # Omitir caché para solicitudes de rango de bytes superiores a 10 megabytes proxy_cache_max_range_offset 10m ; proxy_pass http://mi_subida; } }

Estas mejoras consolidan aún más a NGINX Plus como un motor de almacenamiento en caché de alto rendimiento y compatible con estándares, adecuado para cualquier entorno, desde la aceleración de la entrega de aplicação hasta la creación de redes de entrega de contenido (CDN) completamente desarrolladas.

Controles de salud mejorados

NGINX Plus R12 mejora aún más las capacidades de verificación de estado activo de NGINX Plus.

Comprobación del estado de los servidores recién añadidos

Con la creciente adopción de entornos en contenedores y grupos de aplicações escalables automáticamente, es esencial que el balanceador de carga implemente controles de estado proactivos a nivel de aplicação y permita que los nuevos servidores inicialicen los recursos internos antes de que alcancen su máximo rendimiento.

Antes de NGINX Plus R12, cuando agregaba un nuevo servidor al grupo de equilibrio de carga (usando la API de NGINX Plus o DNS), NGINX Plus lo consideraba en buen estado de inmediato y le enviaba tráfico inmediatamente. Cuando incluye el nuevo parámetro obligatorio en la directiva health_check ( HTTP o TCP/UDP ), el nuevo servidor debe pasar la verificación de estado configurada antes de que NGINX Plus le envíe tráfico. Cuando se combina con la función de inicio lento , el nuevo parámetro brinda a los nuevos servidores aún más tiempo para conectarse a las bases de datos y “calentarse” antes de que se les solicite manejar su parte completa del tráfico.

upstream my_upstream { zona my_upstream 64k; servidor backend1.example.com slow_start=30s ; } servidor { ubicación / { proxy_pass http://my_upstream; # Requerir que el nuevo servidor pase la verificación de estado antes de recibir tráfico health_check obligatorio ; } }

Aquí se incluyen tanto el parámetro obligatorio de la directiva health_check como el parámetro slow_start de la directiva del servidor ( HTTP o TCP/UDP ). Los servidores que se agregan al grupo ascendente mediante las interfaces API o DNS se marcan como no saludables y no reciben tráfico hasta que pasan la verificación de estado; en ese momento, comienzan a recibir una cantidad de tráfico que aumenta gradualmente durante un lapso de 30 segundos.

Comprobación del estado de UDP de configuración cero

Es tan importante implementar controles de estado a nivel de aplicação para servidores UDP como para servidores HTTP y TCP, de modo que el tráfico de producción no se envíe a servidores que no sean completamente funcionales. NGINX Plus admite comprobaciones de estado activas para UDP, pero antes de NGINX Plus R12 era necesario crear un bloque de coincidencia que definiera los datos a enviar y la respuesta a esperar . Puede resultar complicado determinar los valores adecuados cuando se utilizan protocolos binarios o con protocolos de enlace complejos. Para tales aplicações, NGINX Plus R12 ahora admite una verificación de estado de “configuración cero” para UDP que prueba la disponibilidad de la aplicação sin necesidad de definir cadenas de envío y espera. Agregue el parámetro udp a la directiva health_check para una verificación de estado UDP básica.

upstream udp_app { servidor backend1.example.com:1234; servidor backend2.example.com:1234; } servidor { escuchar 1234 udp; proxy_pass udp_app; # Comprobación básica del estado de UDP health_check udp ; }

Actualizaciones de SSL: certificados de cliente para servicios TCP, variables actualizadas

Los certificados de cliente SSL se utilizan comúnmente para autenticar a los usuarios en sitios web protegidos. NGINX Plus R12 agrega soporte de autenticación para servicios TCP protegidos con SSL al soporte HTTP existente. Esto se utiliza normalmente para la autenticación de máquina a máquina, a diferencia del inicio de sesión del usuario final, y le permite usar NGINX Plus tanto para la terminación SSL como para la autenticación del cliente al equilibrar la carga de los protocolos de capa 4. Los ejemplos incluyen la autenticación de dispositivos IoT para la comunicación con el protocolo MQTT.

La variable $ssl_client_verify ahora incluye información adicional para eventos de autenticación de cliente fallida. Esto incluye motivos como certificados “revocados” y “vencidos”.

Se ha cambiado el formato de las variables $ssl_client_i_dn y $ssl_client_s_dn para cumplir con las RFC2253 y4514 . Para obtener más detalles, consulte Cambios en el comportamiento .

Validación JWT mejorada

NGINX Plus R10 introdujo compatibilidad nativa con JSON Web Token (JWT) para casos de uso de OAuth 2.0 y OpenID Connect . Uno de los principales casos de uso es que NGINX Plus valide un JWT, inspeccione los campos que contiene y los pase a la aplicação backend como encabezados HTTP. Esto permite que las aplicações participen fácilmente en un entorno de inicio de sesión único (SSO) OAuth 2.0 descargando la validación del token a NGINX Plus y consumiendo la identidad del usuario mediante la lectura de encabezados HTTP.

NGINX Plus R10 y versiones posteriores pueden inspeccionar los campos definidos en la especificación JWT. NGINX Plus R12 extiende la compatibilidad con JWT para que se pueda acceder a cualquier campo de un JWT (incluidos los campos personalizados) como una variable NGINX y, por lo tanto, se pueda representar por proxy, registrar o usar para tomar decisiones de autorización.

Actualice o pruebe NGINX Plus

Si está ejecutando NGINX Plus, le recomendamos encarecidamente que actualice a la versión 12 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 .

Consulte los cambios de comportamiento descritos anteriormente antes de continuar con la actualización.

Si aún no ha probado NGINX Plus , le recomendamos que lo pruebe para la aceleración web, el equilibrio de carga y la entrega de aplicação , o como un servidor web totalmente compatible con una API para una mejor supervisión y gestión de la configuración . 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.