Nos complace anunciar la disponibilidad de NGINX Plus Release 30 (R30). Basado en NGINX de código abierto, NGINX Plus es el único servidor web de software todo en uno, balanceador de carga, proxy inverso, caché de contenido y puerta de enlace API.
Las características nuevas y mejoradas de NGINX Plus R30 incluyen:
Para completar el lanzamiento se incluyen nuevas características y correcciones de errores heredadas de NGINX Open Source y actualizaciones del módulo JavaScript de NGINX.
Nota : Si está actualizando desde una versión distinta a NGINX Plus R29, asegúrese de consultar la sección Cambios importantes en el comportamiento en los blogs de anuncios anteriores para todas las versiones entre su versión actual y esta.
listen…http2
La directiva listen… http2
ha quedado obsoleta en NGINX 1.25.1. La comprobación de configuración de NGINX mediante nginx -t
arroja una advertencia a tal efecto.
nginx -t
nginx: [advertencia] La directiva "listen ... http2" está obsoleta; utilice la directiva "http2" en su lugar en etc/nginx/nginx.conf :15
nginx: La sintaxis del archivo de configuración /etc/nginx/nginx.conf es correcta.
nginx: La prueba del archivo de configuración /etc/nginx/nginx.conf se realizó correctamente.
Se recomienda encarecidamente a todos los usuarios existentes de esta directiva que actualicen NGINX y utilicen la directiva http2, que habilita HTTP/2 por servidor.
Cambia esto:
escuchar 443 ssl http2;
A esto:
escuchar 443 ssl; http2 activado;
Las versiones anteriores de NGINX Plus utilizaban la biblioteca “libmaxminddb” del repositorio EPEL de Amazon Linux 2 para crear el módulo GeoIP2 . El repositorio EPEL ya no proporciona esta biblioteca, ni es accesible de forma nativa desde la distribución Amazon Linux 2. Por lo tanto, el módulo ya no está disponible en NGINX Plus R30 ya que no hay una forma viable de construirlo para Amazon Linux 2.
La directiva mqtt_rewrite_buffer_size
, que se utiliza para especificar el tamaño del búfer para construir mensajes MQTT, ha sido reemplazada por la directiva mqtt_buffers
. La nueva directiva permite especificar la cantidad de buffers que se pueden asignar por conexión, además de especificar el tamaño de cada buffer.
El número de versión de la API NGINX Plus se ha actualizado de 8 a 9 para reflejar la incorporación de las métricas por trabajador descritas en Telemetría de conexión por trabajador . Los números de versiones anteriores aún funcionan, pero la salida no incluye las métricas agregadas en versiones de API posteriores.
Nuevos sistemas operativos compatibles:
Sistemas operativos más antiguos eliminados:
Sistemas operativos antiguos obsoletos y programados para su eliminación en NGINX Plus R31:
HTTP/3 sobre QUIC ha sido una característica muy esperada solicitada por muchos de nuestros clientes empresariales, y estamos encantados de presentarla oficialmente en NGINX Plus R30. Esta es una nueva tecnología e implementación en la que continuaremos centrándonos en futuras versiones. Recomendamos a los usuarios de NGINX Plus que primero lo prueben en un entorno que no sea de producción y compartan con nosotros cualquier comentario valioso.
NGINX Plus se basa en OpenSSL para la comunicación segura y la funcionalidad criptográfica, haciendo uso de las bibliotecas SSL/TLS que vienen con los sistemas operativos. Sin embargo, debido a que las interfaces TLS de QUIC no son compatibles con OpenSSL en el momento de este lanzamiento, se necesitan bibliotecas de terceros para proporcionar la funcionalidad TLS faltante requerida por HTTP/3.
Para abordar esta inquietud, el equipo de NGINX desarrolló una capa de compatibilidad OpenSSL , eliminando la necesidad de crear y enviar bibliotecas TLS de terceros como quictls, BoringSSL y LibreSSL. Esto ayuda a administrar la experiencia QUIC+HTTP/3 de extremo a extremo en NGINX sin la carga de una implementación TLS personalizada ni la dependencia de cronogramas y hojas de ruta de bibliotecas de terceros. Planeamos mejorar la capa de compatibilidad de OpenSSL en futuras versiones con más características y opciones, como soporte para 0-RTT.
Aquí está la configuración de QUIC+HTTP/3:
http {
formato_registro quic '$dirección_remota - $usuario_remoto [$tiempo_local] '
'"$solicitud" $estado $bytes_del_cuerpo_enviados '
'"$http_referer" "$http_user_agent" "$http3"';
registro_acceso logs/access.log quic;
servidor {
# para una mejor compatibilidad se recomienda
# usar el mismo puerto para quic y https
listen 8443 quic reuseport;
listen 8443 ssl;
ssl_certificate certs/example.com.crt;
ssl_certificate_key certs/example.com.key;
ubicación / {
# necesario para que los navegadores los dirijan al puerto rápido
add_header Alt-Svc 'h3=":8443"; ma=86400';
}
}
}
El soporte QUIC+HTTP/3 en NGINX Plus R30 está disponible como un binario único, a diferencia del soporte HTTP/3 experimental introducido en NGINX Plus R29 , que tenía un binario separado para nginx quic. Esta mejora facilita la implementación de la funcionalidad en su entorno.
Nota: Con NGINX Plus R30, finalizamos el soporte y las actualizaciones para el binario independiente QUIC y planeamos eliminarlo como opción de descarga a finales de este año.
Los usuarios de NGINX Plus ahora pueden monitorear la cantidad total de conexiones por proceso de trabajo para ajustar adecuadamente la directivaworker_connections
. Esta mejora brinda a los usuarios una mejor visibilidad de cómo se distribuyen las conexiones entre los trabajadores. Poder ajustar las conexiones de los trabajadores también le ayudará a evaluar mejor su implementación de NGINX.
Las métricas de conexión por trabajador están disponibles a través de la API REST. Para obtenerlas, utilice el punto de conexión …/api/9/workers
.
Para recuperar métricas de conexión por trabajador para un trabajador individual, utilice el punto final .../api/9/workers/< worker id >
. El ID del trabajador
tiene un índice basado en 0.
A continuación se muestra un ejemplo de respuesta:
{
{
"identificación": 0,
"pid": 2346,
"conexiones": {
"aceptadas": 1,
"abandonado": 0,
"activo": 1,
"inactivo": 0
},
"http": {
"solicitudes": {
"total": 15,
"actual": 1
}
}
},
},
},
},
},
},
}, 1,
"pid": 1234,
"conexiones": {
"aceptadas": 3,
"abandonado": 0,
"activo": 1,
"inactivo": 0
},
"http": {
"solicitudes": {
"total": 15,
"actual": 1
}
}
},
...
}
Las métricas de conexión por trabajador están disponibles en el Panel de monitoreo de actividad en vivo de NGINX Plus , como se muestra a continuación. Acceda a una demostración en vivo de esta función en demo.nginx.com.
El panel muestra la siguiente información sobre las conexiones y solicitudes de NGINX Plus.
Conexiones:
Solicitudes:
Para reducir el tiempo de respuesta para la resolución de problemas, 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 demoras asociadas con la solicitud y recopilación manual de 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 recoge:
ps
, lsof
, vmstat
, etc.)systemd
, etc.Nuestro objetivo con la incorporación del paquete de diagnóstico es ser transparentes con los usuarios sobre qué comandos ejecuta el script dentro del paquete y qué datos se recopilan. Consulte la página del paquete de diagnóstico NGINX Plus para obtener más información.
Nota: La disponibilidad del paquete de diagnóstico se anuncia como parte de la versión actual de NGINX Plus R30, sin embargo, el paquete de diagnóstico en realidad no depende de la versión. En el futuro, planeamos actualizarlo en función de sus comentarios y del soporte de F5 con la intención de mejorar el proceso de recopilación de datos para la resolución de problemas.
Gracias a las mejoras en el consumo de memoria realizadas en el módulo de filtro de transporte de telemetría de cola de mensajes (MQTT), ahora hay un aumento de 4 a 5 veces en el rendimiento.
Se ha eliminado la directiva mqtt_rewrite_buffer_size
. En cambio, la nueva directiva mqtt_buffers <núm> <tamaño>
Se ha introducido para especificar cuántos buffers puede asignar el módulo por conexión, junto con el tamaño de cada buffer. El número predeterminado de buffers es 100 y el tamaño predeterminado de cada buffer es 1024 bytes, lo que hace que el valor predeterminado de la variable mqtt_buffers sea <100> <1024>
.
NGINX Plus ahora conserva los tiempos de expiración de los nombres DNS para los hosts ascendentes resueltos dinámicamente en las recargas, lo que elimina la necesidad de una nueva resolución al recargar la configuración. Antes de esta actualización, las resoluciones de DNS se activaban para todos los upstream. Con esta actualización, NGINX conserva las resoluciones de DNS y los tiempos de expiración para todos los upstreams y activa resoluciones de DNS solo para upstreams nuevos o modificados durante la recarga.
Esta optimización tendrá mayor impacto en entornos NGINX que contengan una gran cantidad de hosts ascendentes. Si tiene 100 o más hosts ascendentes en su configuración NGINX, las optimizaciones serán más evidentes.
NGINX Plus R30 se basa en NGINX Open Source 1.25.1 y hereda cambios funcionales, características y correcciones de errores realizados desde que se lanzó NGINX Plus R29 (en NGINX 1.25.0 y 1.25.1).
server_push
tuvo una adopción mínima y solo podía usarse en casos de uso muy limitados. (Según la documentación de referencia IETF 102, se utilizó en solo el 0,04 % de las sesiones. Según RFC 913, "era difícil de usar de manera efectiva"). El envío de servidores HTTP/2 se deshabilitó en la versión 106 de Chrome . Como parte de este cambio, las directivas http2_push
, http2_push_preload
y http2_max_concurrent_pushes
quedaron obsoletas.ssl
obsoleta ya no es compatible. La directiva ssl
quedó obsoleta en NGINX 1.15.0 y fue reemplazada por el parámetro ssl
de la directiva listen. La directiva ssl obsoleta ahora ha sido eliminada.listen… http2
está obsoleta. Se recomienda a los usuarios utilizar la directiva http2
en su lugar.listen port_num http2
) solo se pueden crear conexiones HTTP/2. Un socket de escucha h2 admite HTTP/1.1 y HTTP/2 con negociación de protocolo a través de ALPN. Sin embargo, en la implementación existente, los clientes HTTP/1.1 fallan en el socket, lo que impide el uso de HTTP Upgrade como un medio para negociar el protocolo. Este cambio permite el soporte simultáneo de HTTP/1.1 y HTTP/2 en un socket TCP simple cuando se utiliza HTTP/2.$sent_http_*
. Un defecto en la lógica para evaluar las variables $sent_http_
de múltiples encabezados provocó posibles desbordamientos del búfer cuando se borraron ciertos elementos pero permanecieron en la lista vinculada. Este problema se manifestó cuando se utilizaron módulos de terceros para anular los valores de múltiples encabezados. La actualización introduce controles de límites refinados, lo que garantiza un manejo y una evaluación más seguros de estas variables.quic_mtu
el parámetro http3 de la directiva listen
el problema de segmentación que
se producía si una expresión regular (regex) estudiaba la asignación de lista.Para obtener la lista completa de nuevos cambios, características, correcciones de errores y soluciones alternativas heredadas de versiones recientes, consulte el archivo CAMBIOS DE NGINX.
NGINX Plus R30 incorpora cambios de la versión 0.8.0 del módulo NGINX JavaScript (njs).
ngx.build , ngx.conf_file_path , ngx.error_log_path , ngx.prefix , ngx.version , ngx.version_number
y ngx.worker_id
.js_shared_dict_zone
para http y stream que permite declarar un diccionario compartido entre procesos de trabajo.Matriz.from(), Matriz.prototipo.toSorted(), Matriz.prototipo.toSpliced(), Matriz.prototipo.toReversed()
.%TypedArray%.prototype.toSorted(), %TypedArray%.prototype.toSpliced(), %TypedArray%.prototype.toReversed()
.algoritmo, extraíble, tipo y usos
.r.requestBody()
del módulo http, que quedó obsoleto en la versión 0.5.0. En su lugar se debe utilizar la propiedad r.requestBuffer
o r.requestText
.r.responseBody()
del módulo http que quedó obsoleto en la versión 0.5.0. En su lugar se debe utilizar la propiedad r.responseBuffer
o r.responseText
.r.internalRedirect()
mientras se filtra en el módulo http
.retval
. Este cambio rompe la compatibilidad con la extensión C para njs requiriendo la modificación del código.Cadena.bytesFrom(), Cadena.prototype.fromBytes(), Cadena.prototype.fromUTF8(), Cadena.prototype.toBytes(), Cadena.prototype.toUTF8(), Cadena.prototype.toString(codificación)
.r.status
al filtrar en el módulo http
.de ubicación
en el módulo http
.crypto.getRandomValues()
.Date.parse()
con formato ISO-8601 y diferencia horaria UTC.Para obtener una lista completa de todas las características, cambios y correcciones de errores, consulte el registro de cambios de njs.
Si está utilizando NGINX Plus, le recomendamos encarecidamente que actualice a NGINX Plus R30 lo antes posible. Además de todas las nuevas y excelentes funciones, también obtendrá varias correcciones y mejoras adicionales, y estar actualizado ayudará a NGINX a ayudarlo si necesita generar un ticket de soporte.
Si aún no has probado NGINX Plus, te recomendamos que lo hagas. Puede usarlo para casos de uso de seguridad, equilibrio de carga y puerta de enlace de API, o como un servidor web totalmente compatible con API de administración y monitoreo mejoradas. Comience hoy con una prueba gratuita de 30 días .
"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.