Nos complace anunciar que NGINX Plus Release 21 (R21) ya está disponible. 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 . Con más de 450 millones de sitios web que dependen de NGINX , NGINX Plus R21 es más confiable y más seguro que nunca, centrándose principalmente en la corrección de errores y las mejoras de estabilidad de NGINX Open Source.
Las nuevas características de NGINX Plus R21 incluyen:
de host
.El software eficiente y la calidad del código son principios centrales de cómo construimos NGINX, tanto de código abierto como NGINX Plus.
El equipo de NGINX emplea todas las herramientas de CI/CD y pruebas automatizadas modernas que espera de cualquier software comercial. Las pruebas diarias de la rama de desarrollo activa muestran una “densidad de defectos” notablemente baja de solo 0,01 defectos por cada 1000 líneas de código, en comparación con una densidad promedio de 0,7 defectos por cada 1000 líneas para bases de código de tamaño similar.
También encargamos pruebas de penetración externas e independientes y revisiones de código tanto para componentes de código abierto como para NGINX Plus. Las más recientes pruebas de penetración y revisiones de código identificaron varios problemas que se abordan en esta versión.
En total, NGINX Plus R21 incluye correcciones para 14 errores:
aio
494
fue devuelto en lugar de400
cuando hay errores con el código494
fueron redirigidos con la directiva error_page
de reescritura
con una cadena de reemplazo vacíabreak
junto con la directiva alias
, o junto con la directiva proxy_pass
con un URI.Transfer-Encoding
de ubicación
podría contener basura si el URI de la solicitud se reescribió a uno que contenga un carácter nuloerror_page
debug_points
al utilizar HTTP/2Tenga en cuenta que ninguno de estos errores fue crítico y no hay registros CVE asociados.
En el momento de este lanzamiento, estamos trabajando arduamente en nuestra hoja de ruta para 2020. Más adelante este año esperamos poner a disposición una implementación de nivel de producción de HTTP/3 (también conocida como QUIC). Si está interesado en seguir o probar esta tecnología, esté atento a los parches experimentales en las próximas semanas.
NGINX Plus R15 introdujo soporte para enrutamiento y equilibrio de carga del tráfico gRPC a grupos ascendentes. Puede aprovechar NGINX Plus para enrutar el tráfico gRPC incluyendo la directiva grpc_pass
.
NGINX Plus R21 introduce soporte de variables en la directiva grpc_pass
para proporcionar políticas de enrutamiento dinámicas impulsadas por API que se extienden a las cargas de trabajo de gRPC. Esto permite satisfacer casos de uso como:
La siguiente configuración es una implementación de muestra del enrutamiento de depuración.
En la línea 1, definimos un almacén de valores clave que puede usar rangos de red como clave (habilitado por 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 solicitudes gRPC según la subred IP del cliente.
Por ejemplo, puede ejecutar el siguiente comando en la instancia NGINX Plus para enrutar las solicitudes originadas en 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-greeter
Para cambiar el tráfico de gRPC al grupo de servicios de producción ( grpc-servers-greeter-prod ), ejecute el siguiente comando:
$ curl -iX PATCH -d '{"192.168.80.0/24":"grpc-servers-greeter-prod"}' https://localhost:8080/api/6/http/keyvals/grpc-greeter
El módulo JavaScript de NGINX (njs) se ha actualizado a la versión 0.3.9 con varias correcciones de errores y algunas mejoras funcionales relacionadas con las subsolicitudes y la compatibilidad del sistema de archivos.
La función r.subrequest
permite que el código njs realice solicitudes HTTP asíncronas a cualquier URI. Esto tiene muchos usos posibles, siendo un ejemplo notable las llamadas API a un servidor de autenticación externo, por ejemplo, la introspección de tokens de OAuth 2.0 . Esta versión trae dos mejoras importantes a las subsolicitudes: promesas y subsolicitudes separadas.
[ Editor : Los siguientes dos casos de uso de muestra son solo algunos de los muchos para el módulo JavaScript de NGINX. Para obtener una lista completa, consulte Casos de uso del módulo JavaScript NGINX . ]
Las subsolicitudes generalmente incluyen una función de devolución de llamada que procesa la respuesta de la subsolicitud. Ahora se puede omitir una función de devolución de llamada, utilizando promesas de JavaScript como una forma de procesar respuestas en línea con el código de llamada. El siguiente ejemplo ilustra cómo se pueden encadenar subsolicitudes sucesivas en una única secuencia de código sin utilizar devoluciones de llamadas.
Las subsolicitudes son asincrónicas y anteriormente debían invocarse desde una directiva js_content
. Ahora las subsolicitudes también se pueden activar desde una directiva js_set
durante la evaluación de la variable. Estas subsolicitudes “separadas” aún funcionan de forma asincrónica, pero no devuelven ningún dato a la función que las llama y se ignora cualquier respuesta.
El siguiente código de muestra utiliza subsolicitudes separadas para enviar una copia de los encabezados de 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 usar la directiva js_import
, que reemplazó 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 la configuración de NGINX y los archivos JavaScript.]
Luego, el código JavaScript se ejecuta en la fase de registro solicitando la evaluación de la variable cuando escribimos el registro de acceso.
El objeto del sistema de archivos JavaScript fs
se ha mejorado para admitir promesas para operaciones asincrónicas. Además, hay nuevos métodos del sistema de archivos: access()
, realpath()
, symlink()
y unlink()
.
Si está utilizando NGINX Plus, le recomendamos encarecidamente que actualice a NGINX Plus R21 lo antes posible. También recibirás una serie de correcciones y mejoras adicionales, y ayudará a NGINX a ayudarte cuando necesites generar un ticket de soporte.
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 por cuestiones de seguridad, equilibrio de carga y puerta de enlace de API, o como servidor web totalmente compatible con API de administración y monitoreo mejoradas. Puede comenzar hoy con una prueba gratuita 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.