Nos complace anunciar la disponibilidad de NGINX Plus Release 30 (R30). Basado en NGINX Open Source, NGINX Plus es la única solución de software todo en uno que funciona como servidor web, equilibrador de carga, proxy inverso, caché de contenido y puerta de enlace de API.
Las funciones nuevas y mejoradas de NGINX Plus R30 incluyen:
- Compatibilidad nativa con QUIC+HTTP/3 – NGINX Plus ahora ofrece compatibilidad oficial con HTTP/3. La implementación no depende de bibliotecas de terceros para proporcionar la funcionalidad TLS de OpenSSL que falta y que es necesaria para ofrecer compatibilidad con HTTP/3 a través del protocolo QUIC. Utiliza una capa de compatibilidad con OpenSSL desarrollada por el equipo de NGINX para sortear las dificultades que plantean las interfaces TLS de QUIC no compatibles con OpenSSL.
- Telemetría de conexiones por proceso de trabajo – Ahora se admite la supervisión de conexiones a nivel de cada proceso de trabajo. Esto permite a los usuarios optimizar el rendimiento de NGINX regulando el número de procesos de trabajo y distribuyendo eficazmente las conexiones entre ellos para lograr un rendimiento óptimo.
- Paquete de diagnóstico – El paquete de diagnóstico de NGINX recopila en un único archivo comprimido todos los datos necesarios para solucionar problemas. Esto mejora la comunicación entre los usuarios de NGINX Plus y el soporte de F5, lo que aumenta la eficiencia y reduce el tiempo de resolución de los problemas.
Para completar esta versión se incluyen nuevas funcionalidades y correcciones de errores heredadas de NGINX Open Source, así como actualizaciones del módulo JavaScript de NGINX.
Cambios importantes en el comportamiento
Nota: Si va a actualizar desde una versión distinta de NGINX Plus R29, asegúrese de consultar la sección Cambios importantes de comportamiento en los blogs de anuncios anteriores para todas las versiones comprendidas entre la que utiliza actualmente y esta.
Obsolescencia de la directiva listen … http2 directive
La directiva listen … http2 ha quedado obsoleta en NGINX 1.25.1. La comprobación de la configuración de NGINX mediante nginx -t muestra una advertencia al respecto.
nginx -t
nginx: [warn] the "listen ... http2" directive is deprecated, use the "http2" directive instead in etc/nginx/nginx.conf :15
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successfulSe recomienda encarecidamente a todos los usuarios actuales de esta directiva que actualicen NGINX y utilicen la directiva http2, que habilita HTTP/2 para cada servidor de forma individual.
Cambie esto:
listen 443 ssl http2;A esto:
listen 443 ssl;
http2 on;Falta de disponibilidad del módulo GeoIP2 en Amazon Linux 2
Las versiones anteriores de NGINX Plus utilizaban la biblioteca «libmaxminddb» del repositorio EPEL de Amazon Linux 2 para compilar el módulo GeoIP2. El repositorio EPEL ya no proporciona esta biblioteca, que tampoco está disponible de forma nativa en la distribución Amazon Linux 2. Por lo tanto, el módulo ya no está disponible en NGINX Plus R30, ya que no existe ninguna forma viable de compilarlo para Amazon Linux 2.
Cambios en las directivas de MQTT
La directiva mqtt_rewrite_buffer_size, que se utiliza para especificar el tamaño del búfer empleado para crear mensajes MQTT, ha sido sustituida por la directiva mqtt_buffers. La nueva directiva permite especificar tanto el número de búferes que se pueden asignar por conexión como el tamaño de cada uno de ellos.
Versión actualizada de la API
El número de versión de la API de NGINX Plus se ha actualizado de la 8 a la 9 para reflejar la incorporación de las métricas por proceso de trabajo descritas en Telemetría de conexiones por proceso de trabajo. Los números de versión anteriores siguen funcionando, pero la salida no incluye las métricas añadidas en versiones posteriores de la API.
Cambios en la compatibilidad con plataformas
Nuevos sistemas operativos compatibles:
- Debian 12
- Alpine 3.18
Sistemas operativos antiguos eliminados:
- Alpine 3.14, que llegó al final de su vida útil (EOL) el 1 de mayo de 2023
- Ubuntu 18.04, que llegó al final de su vida útil (EOL) el 26 de abril de 2023
Sistemas operativos antiguos obsoletos y cuya eliminación está prevista en NGINX Plus R31:
- Alpine 3.15, que llegará al final de su vida útil en noviembre de 2023
Nuevas funcionalidades en detalle
Compatibilidad nativa con QUIC+HTTP/3
HTTP/3 sobre QUIC ha sido una funcionalidad muy esperada y solicitada por muchos de nuestros clientes empresariales, y nos complace presentarla oficialmente en NGINX Plus R30. Se trata de una tecnología e implementación nuevas en las que seguiremos centrándonos en futuras versiones. Recomendamos a los usuarios de NGINX Plus que primero las prueben en un entorno que no sea de producción y que compartan con nosotros cualquier comentario que pueda resultar útil.
NGINX Plus depende de OpenSSL para las comunicaciones seguras y las funciones criptográficas, y utiliza las bibliotecas SSL/TLS incluidas con los sistemas operativos. Sin embargo, dado que OpenSSL no admite las interfaces TLS de QUIC en el momento de esta versión, se necesitan bibliotecas de terceros que proporcionen la funcionalidad TLS necesaria para HTTP/3.
Para resolver este problema, el equipo de NGINX desarrolló una capa de compatibilidad con OpenSSL, lo que elimina la necesidad de compilar y distribuir bibliotecas TLS de terceros como quictls, BoringSSL y LibreSSL. Esto permite gestionar la experiencia integral de QUIC+HTTP/3 en NGINX sin la carga que supone una implementación de TLS personalizada ni la dependencia de los calendarios y las hojas de ruta de bibliotecas de terceros. Tenemos previsto mejorar la capa de compatibilidad con OpenSSL en futuras versiones con más funciones y opciones, como la compatibilidad con 0-RTT.
Esta es la configuración de QUIC+HTTP/3:
http {
log_format quic '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent" "$http3"';
access_log logs/access.log quic;
server {
# for better compatibility it's recommended
# to use the same port for quic and https
listen 8443 quic reuseport;
listen 8443 ssl;
ssl_certificate certs/example.com.crt;
ssl_certificate_key certs/example.com.key;
location / {
# required for browsers to direct them into quic port
add_header Alt-Svc 'h3=":8443"; ma=86400';
}
}
}La compatibilidad con QUIC+HTTP/3 en NGINX Plus R30 está disponible en un único binario, a diferencia de la compatibilidad experimental con HTTP/3 introducida en NGINX Plus R29, que disponía de un binario independiente para nginx quic. Esta mejora facilita la implementación de esta funcionalidad en su entorno.
Nota: Con NGINX Plus R30, dejamos de ofrecer soporte y actualizaciones para el binario QUIC independiente y tenemos previsto retirarlo como opción de descarga a finales de este año.
Telemetría de conexiones por proceso de trabajo
Los usuarios de NGINX Plus ahora pueden supervisar el número total de conexiones por proceso de trabajo para ajustar adecuadamente la directiva worker_connections. Esta mejora ofrece a los usuarios una mayor visibilidad sobre cómo se distribuyen las conexiones entre los procesos de trabajo. La posibilidad de ajustar las conexiones de los procesos de trabajo también permite evaluar mejor la implementación de NGINX.
Las métricas de conexión por proceso de trabajo están disponibles a través de la API REST. Para obtenerlas, utilice el endpoint …/api/9/workers.
Para obtener las métricas de conexión por trabajador de un trabajador concreto, utilice el endpoint .../api/9/workers/<worker id> . El ID del trabajador utiliza un índice basado en 0.
A continuación se muestra un ejemplo de respuesta:
{
{
"id": 0,
"pid": 2346,
"connections": {
"accepted": 1,
"dropped": 0,
"active": 1,
"idle": 0
},
"http": {
"requests": {
"total": 15,
"current": 1
}
}
},
{
"id": 1,
"pid": 1234,
"connections": {
"accepted": 3,
"dropped": 0,
"active": 1,
"idle": 0
},
"http": {
"requests": {
"total": 15,
"current": 1
}
}
},
...
}Las métricas de conexión por proceso de trabajo están disponibles en el NGINX Plus Live Activity Monitoring Dashboard, como se muestra a continuación. Acceda a una demostración en directo de esta función en demo.nginx.com.

El panel muestra la siguiente información sobre las conexiones y las solicitudes de NGINX Plus.
Conexiones:
- Conexiones aceptadas por trabajador
- Conexiones activas por proceso de trabajo
- Conexiones inactivas por trabajador
- Conexiones descartadas por trabajador
Solicitudes:
- Solicitudes actuales por trabajador
- Solicitudes totales por trabajador
- Solicitudes/s por trabajador
Paquete de diagnóstico
Para reducir el tiempo de resolución de incidencias, el paquete de diagnóstico agiliza el proceso de recopilación de los datos necesarios para solucionar problemas en su entorno NGINX. El paquete de diagnóstico también ayuda a evitar discrepancias y retrasos asociados a la solicitud y recopilación manuales de la información necesaria para solucionar problemas, lo que hace que la interacción entre los clientes de NGINX Plus y el soporte de F5 sea más eficiente.
El paquete de diagnóstico recopila:
- Información de NGINX – versión de NGINX Plus, configuraciones, información de procesos, módulos de terceros, registros, y estadísticas y endpoints de la API
- Información del sistema – Comandos del host (
ps,lsof,vmstat, etc.) - Información del servicio –
systemd, etc. - NGINX Agent – Registros y archivos de configuración (si existen)
- NGINX App Protect – Registros y archivos de configuración (si los hay)
- Registro del paquete de soporte – Registro que contiene una lista de todos los archivos recopilados
Nuestro objetivo al añadir el paquete de diagnóstico es informar con transparencia a los usuarios sobre los comandos que ejecuta el script incluido en el paquete y los datos que se recopilan. Consulte la página NGINX Plus Diagnostic Package para obtener más información.
Nota: La disponibilidad del paquete de diagnóstico se anuncia como parte de la versión actual NGINX Plus R30; sin embargo, el paquete de diagnóstico no depende realmente de ninguna versión. En adelante, tenemos previsto actualizarlo en función de sus comentarios y de los del equipo de soporte de F5, con el objetivo de mejorar el proceso de recopilación de datos para la resolución de problemas.
Otras mejoras de NGINX Plus R30
Optimizaciones de MQTT
Gracias a las mejoras en el consumo de memoria del módulo de filtrado Message Queuing Telemetry Transport (MQTT), el rendimiento se ha multiplicado por entre 4 y 5.
Se ha eliminado la directiva mqtt_rewrite_buffer_size. En su lugar, se ha introducido la nueva directiva mqtt_buffers <num> <size> para especificar cuántos búferes puede asignar el módulo por conexión, así como el tamaño de cada búfer. El número predeterminado de búferes es 100 y el tamaño predeterminado de cada búfer es de 1024 bytes, por lo que el valor predeterminado de la variable es mqtt_buffers <100> <1024>.
Optimizaciones de la recarga de DNS
NGINX Plus ahora conserva los tiempos de caducidad de los nombres DNS de los hosts ascendentes resueltos dinámicamente entre recargas, lo que elimina la necesidad de volver a resolverlos al recargar la configuración. Antes de esta actualización, se activaban resoluciones DNS para todos los servidores ascendentes. Con esta actualización, NGINX conserva las resoluciones DNS y los tiempos de caducidad de todos los servidores ascendentes, y solo activa resoluciones DNS para los servidores ascendentes nuevos o modificados durante la recarga.
Esta optimización tendrá un mayor impacto en los entornos NGINX que contengan un gran número de hosts ascendentes. Si su configuración de NGINX incluye 100 o más hosts ascendentes, las mejoras serán más evidentes.
Cambios heredados de NGINX Open Source
NGINX Plus R30 se basa en NGINX Open Source 1.25.1 y hereda los cambios funcionales, las funcionalidades y las correcciones de errores realizados desde el lanzamiento de NGINX Plus R29 (en NGINX 1.25.0 y 1.25.1).
Cambios
- Se ha eliminado la compatibilidad con la inserción del servidor HTTP/2.
server_pushtuvo una adopción mínima y solo podía utilizarse en casos de uso muy limitados. (Según la documentación de referencia del IETF 102, se utilizó únicamente en el 0,04 % de las sesiones. Según el RFC 913, era «difícil de utilizar eficazmente»). La inserción del servidor HTTP/2 se deshabilitó en Chrome a partir de la versión 106. Como parte de este cambio, las directivashttp2_push,http2_push_preloadyhttp2_max_concurrent_pusheshan quedado obsoletas. - La directiva obsoleta
sslya no es compatible. La directivasslquedó obsoleta en NGINX 1.15.0 y fue sustituida por el parámetrosslde la directiva listen. La directiva ssl obsoleta se ha eliminado. - Como se ha mencionado anteriormente, la directiva
listen … http2está obsoleta. Se recomienda a los usuarios utilizar en su lugar la directivahttp2.- Para las conexiones SSL con OpenSSL v1.0.2h o una versión posterior, si el protocolo HTTP/2 está habilitado en el servidor virtual seleccionado mediante la indicación del nombre del servidor (SNI), la función de retorno de llamada de negociación de protocolos de la capa de aplicación (ALPN) lo selecciona automáticamente.
- Para versiones anteriores de OpenSSL, el protocolo HTTP/2 se habilita en función de la configuración predeterminada del servidor virtual.
- En las conexiones TCP sin cifrar, HTTP/2 ahora se detecta automáticamente mediante el prefacio de HTTP/2 si está habilitado en el servidor virtual predeterminado. Si el prefacio no coincide, se presupone que se trata de HTTP/0.9-1.1.
- Se añade compatibilidad con HTTP/2 sobre TCP sin cifrar (h2c) y HTTP/1.1 en el mismo socket de escucha. En la implementación existente, si un usuario configura un socket de escucha h2c (por ejemplo,
listen port_num http2), solo se pueden crear conexiones HTTP/2. Un socket de escucha h2 admite tanto HTTP/1.1 como HTTP/2, con negociación del protocolo mediante ALPN. Sin embargo, en la implementación existente, los clientes HTTP/1.1 no pueden conectarse al socket, lo que impide utilizar HTTP Upgrade como medio para negociar el protocolo. Este cambio permite admitir simultáneamente HTTP/1.1 y HTTP/2 en un socket TCP sin cifrar cuando se utiliza HTTP/2. - Se habilita la prevención de posibles desbordamientos de búfer con algunas variables
$sent_http_*. Un defecto en la lógica de evaluación de las variables multicabecera$sent_http_provocaba posibles desbordamientos de búfer cuando determinados elementos se borraban, pero permanecían en la lista enlazada. Este problema se manifestaba cuando se utilizaban módulos de terceros para sobrescribir valores multicabecera. La actualización incorpora comprobaciones de límites más precisas, lo que garantiza una gestión y evaluación más seguras de estas variables.
Características
- Se ha añadido compatibilidad completa con HTTP/3. La versión principal NGINX 1.25.0 introdujo la compatibilidad con HTTP/3, que se ha integrado en NGINX Plus R30. La implementación de NGINX Plus R30 presenta los siguientes cambios con respecto a los paquetes experimentales suministrados en NGINX Plus R29:
-
- Se ha eliminado la directiva «
quic_mtu» - Se eliminó la directiva «
parámetro http3 de listen» - Se ha eliminado la compatibilidad con QUIC del módulo stream
- Se ha eliminado el envío push del servidor HTTP/3
- Se ha corregido la compilación de la capa de compatibilidad de OpenSSL con OpenSSL 3.2+
- Se ha eliminado la directiva «
Corrección de errores
- Se ha corregido el
fallo de segmentaciónque se producía si fallaba la asignación de la lista de estudio de una expresión regular (regex).
Para consultar la lista completa de cambios, funciones, correcciones de errores y soluciones alternativas heredados de versiones recientes, consulte el archivo CHANGES de NGINX.
Cambios en el módulo JavaScript de NGINX
NGINX Plus R30 incorpora cambios del módulo NGINX JavaScript (njs) versión 0.8.0.
Características
- Se han introducido las propiedades globales de NGINX:
ngx.build, ngx.conf_file_path, ngx.error_log_path, ngx.prefix, ngx.version, ngx.version_number, yngx.worker_id. - Se ha incorporado la directiva
js_shared_dict_zonepara http y stream, que permite declarar un diccionario compartido entre los procesos de trabajo. - Se añadieron métodos de Array compatibles con ES13:
Array.from(), Array.prototype.toSorted(), Array.prototype.toSpliced(), Array.prototype.toReversed(). - Se han añadido métodos de TypedArray compatibles con ES13:
%TypedArray%.prototype.toSorted(), %TypedArray%.prototype.toSpliced(), %TypedArray%.prototype.toReversed(). - Se han añadido propiedades de CryptoKey en la API WebCrypto. Se han añadido las siguientes propiedades:
algorithm, extractable, type, usages.
Cambios
- Se ha eliminado el tratamiento especial de las cabeceras prohibidas en la API Fetch introducido en la versión 0.7.10.
- Se ha eliminado
r.requestBody()del módulo http, que quedó obsoleto en la versión 0.5.0. En su lugar, debe utilizarse la propiedadr.requestBufferor.requestText. - Se ha eliminado
r.responseBody()del módulo http, que quedó obsoleto en la versión 0.5.0. En su lugar, debe utilizarse la propiedadr.responseBufferor.responseText. - Se lanza una excepción en
r.internalRedirect()durante el filtrado en el módulohttp. - Los métodos nativos reciben el argumento
retval. Este cambio rompe la compatibilidad con las extensiones de C para njs, por lo que es necesario modificar el código. - Se eliminaron los métodos obsoletos de String que no cumplían con los estándares. Se eliminaron los siguientes métodos:
String.bytesFrom(), String.prototype.fromBytes(), String.prototype.fromUTF8(), String.prototype.toBytes(), String.prototype.toUTF8(), String.prototype.toString(encoding). - Se ha eliminado la compatibilidad con la compilación mediante GNU readline.
Correcciones de errores
- Se ha corregido el método de asignación
r.statusal filtrar en el módulohttp. - Se corrigió la configuración de la cabecera
Locationen el módulohttp. - Se ha corregido el valor de retorno de
сrypto.getRandomValues(). - Se ha corregido la evaluación de los nombres de propiedades calculadas con expresiones de función.
- Se ha corregido el nombre implícito de una expresión de función declarada en matrices.
- Se ha corregido el análisis sintáctico de los bucles for-in.
- Se ha corregido
Date.parse()con el formato ISO-8601 y el desfase horario UTC.
Para consultar una lista completa de todas las funcionalidades, cambios y correcciones de errores, consulte el registro de cambios de njs.
Actualice o pruebe NGINX Plus
Si utiliza NGINX Plus, le recomendamos encarecidamente que actualice a NGINX Plus R30 lo antes posible. Además de todas las fantásticas funciones nuevas, también obtendrá varias correcciones y mejoras adicionales. Asimismo, mantener el producto actualizado permitirá que NGINX pueda ayudarle mejor si necesita abrir una incidencia de soporte.
Si aún no ha probado NGINX Plus, le animamos a hacerlo. Puede utilizarlo para casos de uso de seguridad, balanceo de carga y puerta de enlace de API, o como servidor web con soporte completo y API avanzadas de supervisión y gestión. Empiece hoy mismo con una prueba gratuita de 30 días.
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.