Nos complace anunciar que NGINX Plus Release 21 (R21) ya está disponible. Basado en NGINX Open Source, NGINX Plus es la única solución todo en uno que combina balanceador de carga, caché de contenido, servidor web y puerta de enlace de API. Con más de 450 millones de sitios web que confían en NGINX, NGINX Plus R21 es más fiable y seguro que nunca y se centra principalmente en correcciones de errores y mejoras de estabilidad de NGINX Open Source.
Entre las nuevas funciones de NGINX Plus R21 se incluyen:
- Proxy gRPC dinámico – Hemos añadido compatibilidad con variables al transferir conexiones gRPC a servicios gRPC de backend. Esto permite enrutar dinámicamente las conexiones gRPC a grupos de servicios en función de los atributos del cliente.
- Mejoras en el módulo JavaScript de NGINX – El módulo JavaScript de NGINX (njs) se ha actualizado a la versión 0.3.9, con varias correcciones de errores y mejoras funcionales adicionales relacionadas con las subsolicitudes y la compatibilidad con el sistema de archivos.
Cambios importantes en el comportamiento
- Solicitudes aceptables – De conformidad con RFC 7230, NGINX Plus ya no permite solicitudes de clientes con varios encabezados
Host. - Nuevos sistemas operativos compatibles – Alpine Linux 3.11.
- Sistemas operativos antiguos que ya no son compatibles – Plataformas de 32 bits (arquitecturas i386).
Invertir en calidad
La eficiencia del software y la calidad del código son principios fundamentales en el desarrollo tanto de NGINX de código abierto como de NGINX Plus.
El equipo de NGINX utiliza todas las herramientas modernas de CI/CD y pruebas automatizadas que cabe esperar de cualquier software comercial. Las pruebas diarias de la rama de desarrollo activa muestran una «densidad de defectos» extraordinariamente baja, de tan solo 0,01 defectos por cada 1000 líneas de código, frente a una densidad media de 0,7 defectos por cada 1000 líneas en bases de código de tamaño similar.
También encargamos pruebas de penetración y revisiones de código externas e independientes tanto para los componentes de código abierto como para los de NGINX Plus. Las pruebas de penetración y revisiones de código más recientes identificaron varios problemas que se han solucionado en esta versión.
Correcciones de errores
En total, NGINX Plus R21 incluye correcciones para 14 errores:
- Fuga de sockets al usar HTTP/2 (dos errores distintos)
- Fuga de sockets al usar subsolicitudes en el módulo njs y la directiva
aiodirective - Posible agotamiento de memoria en el módulo WebDav module
- Posible divulgación de memoria en el módulo MP4 module
- Se devolvió el código de estado
494en lugar de400cuando los errores con el código494se redirigieron mediante la directivaerror_pagedirective - Podría producirse un tiempo de espera al procesar solicitudes canalizadas en una conexión SSL
- Podría producirse un fallo de segmentación en un proceso de trabajo si se utilizara el grapado OCSP was used
- Podría producirse un fallo de segmentación al iniciar o durante la reconfiguración si la configuración incluyera la directiva «
rewrite» con una cadena de reemplazo vacía - Podría producirse un fallo de segmentación en un proceso de trabajo si la directiva
breakse utilizara junto con la directivaalias, o junto con la directivaproxy_passcon un URI - Solo se procesó la primera cabecera de solicitud «
Transfer-Encoding» - La línea de la cabecera de respuesta «
Location» podría contener datos basura si el URI de la solicitud se reescribiera como uno que contuviera un carácter nulo - Las solicitudes con cuerpo se gestionaban incorrectamente al devolver redirecciones con la directiva
error_pagedirective - Error en la directiva
debug_pointsal usar HTTP/2
Tenga en cuenta que ninguno de estos errores era crítico y que no hay registros CVE asociados.
Invertir en la hoja de ruta de NGINX Plus
En el momento de este lanzamiento, estamos trabajando intensamente en nuestra hoja de ruta para 2020. Más adelante este año, esperamos ofrecer una implementación apta para producción de HTTP/3 (también conocido como QUIC). Si le interesa seguir o probar esta tecnología, esté atento a los parches experimentales que publicaremos en las próximas semanas.
Nuevas funcionalidades en detalle
Proxy dinámico de gRPC
NGINX Plus R15 incorporó compatibilidad con el enrutamiento y el balanceo de carga del tráfico gRPC hacia grupos de servidores ascendentes. Puede utilizar NGINX Plus para enrutar el tráfico gRPC incluyendo la directiva grpc_pass.
NGINX Plus R21 incorpora compatibilidad con variables en la directiva grpc_pass para ofrecer políticas de enrutamiento dinámicas y basadas en API que se extienden a las cargas de trabajo de gRPC. Esto permite abordar casos de uso como los siguientes:
- Pruebas A/B – Distribuya estadísticamente las solicitudes gRRC entre varios servidores upstream para determinar cuál ofrece un mejor rendimiento.
- Enrutamiento de depuración – Enruta el tráfico a un servicio gRPC de producción, pero dirige las solicitudes con atributos específicos (direcciones IP de origen, metadatos de gRPC) a un servicio gRPC de depuración.
La siguiente configuración es un ejemplo de implementación del enrutamiento de depuración.
Cargando ejemplo de código…
En la línea 1, definimos un almacén de clave-valor que puede utilizar rangos de red como clave (habilitado mediante el parámetro type=ip). La línea 2 especifica que la variable $greeter_upstream se evalúa realizando una búsqueda en el almacén de clave-valor grpc-greeter, utilizando la dirección IP del cliente ($remote_addr) como clave.
En la línea 10, especificamos grpc://$greeter_upstream como parámetro de la directiva grpc_pass, para la terminación TLS y el enrutamiento dinámico de las solicitudes gRPC en función de la subred IP del cliente.
Por ejemplo, puede ejecutar el siguiente comando en la instancia de NGINX Plus para enrutar las solicitudes procedentes de la subred 192.168.80.0/24 a grpc-servers-greeter-debug:
$ curl -iX POST -d '{"192.168.80.0/24":"grpc-servers-greeter-debug"}' http://localhost:8080/api/6/http/keyvals/grpc-greeterPara dirigir el tráfico gRPC al grupo de servicios de producción (grpc-servers-greeter-prod), ejecuta el siguiente comando:
$ curl -iX PATCH -d '{"192.168.80.0/24":"grpc-servers-greeter-prod"}' https://localhost:8080/api/6/http/keyvals/grpc-greeterMejoras en el módulo JavaScript de NGINX
El módulo JavaScript de NGINX (njs) se ha actualizado a la versión 0.3.9 e incluye varias correcciones de errores y algunas mejoras funcionales relacionadas con las subsolicitudes y la compatibilidad con el sistema de archivos.
Subsolicitudes
La función r.subrequest permite que el código njs realice solicitudes HTTP asíncronas a cualquier URI. Esto ofrece muchos casos de uso posibles; un ejemplo destacado son las llamadas a una API de un servidor de autenticación externo, como la introspección de tokens de OAuth 2.0. Esta versión incorpora dos mejoras importantes en las subsolicitudes: promesas y subsolicitudes independientes.
[Editor – Los dos casos de uso de ejemplo que se presentan a continuación son solo algunos de los muchos disponibles para el módulo JavaScript de NGINX. Para consultar la lista completa, consulte Casos de uso del módulo JavaScript de NGINX.]
Promesas
Las subsolicitudes suelen incluir una función de devolución de llamada que procesa la respuesta de la subsolicitud. Ahora se puede omitir dicha función y utilizar promesas de JavaScript para procesar las respuestas en línea junto con el código que realiza la llamada. El siguiente ejemplo muestra cómo se pueden encadenar subsolicitudes sucesivas en una única secuencia de código sin utilizar funciones de devolución de llamada.
Cargando ejemplo de código…
Subsolicitudes desvinculadas
Las subsolicitudes son asíncronas y, anteriormente, debían invocarse desde una directiva js_content. Ahora, las subsolicitudes también pueden activarse desde una directiva js_set durante la evaluación de variables. Estas subsolicitudes «desvinculadas» siguen funcionando de forma asíncrona, pero no devuelven ningún dato a la función que las invoca y se ignora cualquier respuesta.
El siguiente código de ejemplo utiliza subsolicitudes independientes para enviar una copia de las cabeceras de la solicitud a un sistema de gestión de eventos e información de seguridad (SIEM) si la cantidad total de datos intercambiados supera 1 MB.
[Editor – La siguiente configuración se ha actualizado para utilizar la directiva js_import, que sustituyó a la directiva js_include en NGINX Plus R23<.htmla>. 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 los archivos de configuración de NGINX y JavaScript.]
Cargando ejemplo de código…
A continuación, el código JavaScript se ejecuta durante la fase de registro al solicitar la evaluación de la variable cuando escribimos el registro de acceso.
Cargando ejemplo de código…
Sistema de archivos
El objeto del sistema de archivos de JavaScript fs se ha mejorado para admitir promesas en operaciones asíncronas. Además, se han añadido nuevos métodos del sistema de archivos: access(), realpath(), symlink(), y unlink().
Actualice o pruebe NGINX Plus
Si utiliza NGINX Plus, le recomendamos encarecidamente que actualice a NGINX Plus R21 lo antes posible. También obtendrá varias correcciones y mejoras adicionales, y facilitará que NGINX pueda ayudarle cuando necesite abrir una incidencia de soporte.
Revise detenidamente las nuevas funcionalidades y los cambios de comportamiento descritos en esta entrada del blog antes de proceder con la actualización.
Si aún no ha probado NGINX Plus, le animamos a hacerlo, ya sea para la seguridad, el equilibrio de carga y la puerta de enlace de API, o como servidor web con soporte completo y API avanzadas de supervisión y gestión. Puede empezar hoy mismo con una prueba gratuita de 30 días. Compruebe por sí mismo cómo NGINX Plus puede ayudarle a ofrecer y escalar sus aplicaciones.
Sobre el autor

Artículos relacionados del blog
Únete a F5 NGINX en AppWorld 2024
Descubre las numerosas razones para asistir al evento insignia de F5, que incluirá un emocionante anuncio sobre la cartera de productos NGINX.
Rotación de certificados SSL/TLS sin reinicios en NGINX Open Source
La función de diccionario compartido permite configurar NGINX sin necesidad de reiniciarlo al renovar los certificados SSL/TLS.
Exposición de APIs en Kubernetes
La unidad 2 de Microservices March 2022 se centra en cómo exponer tus API en Kubernetes. Aquí tienes enlaces a los recursos que necesitas: la retransmisión en directo del 14 de marzo, artículos de blog y otros recursos de preparación, y el laboratorio práctico «Protege las API de Kubernetes mediante la limitación de solicitudes».
NGINX Sprint 2.0: visión clara, código renovado y nuevos compromisos con el código abierto
Hoy, en NGINX Sprint 2.0, anunciamos cómo respaldaremos nuestra visión del futuro de las aplicaciones modernas con una mayor presencia en la comunidad de código abierto, incluida la participación en el proyecto comunitario Kubernetes, nuevos proyectos de software de código abierto y la arquitectura de referencia para aplicaciones modernas.
Presentamos NGINX Plus R22
NGINX Plus R22 incorpora nuevas funcionalidades, como la compatibilidad con OCSP para verificar la revocación de certificados en TLS mutuo, el uso de varios proveedores de identidad OIDC en una configuración, el seguimiento en tiempo real de la limitación de solicitudes y conexiones en el panel de NGINX Plus y mejoras en NGINX JavaScript.
Presentamos NGINX Plus R17
NGINX Plus R17 incorpora compatibilidad con la limitación de velocidad en dos fases y con TLS 1.3, la versión más reciente del protocolo Transport Layer Security. La configuración de OpenID Connect es más sencilla y NGINX ModSecurity WAF es el doble de rápido que antes. También se ha actualizado el módulo JavaScript de NGINX.