Nginx 1.26.0 lanzado con soporte HTTP/3

Tras un año de desarrollo, se ha publicado una nueva rama estable del servidor HTTP de alto rendimiento y servidor proxy multiprotocolo nginx 1.26.0, que incorpora los cambios acumulados en la rama principal 1.25.x. En el futuro, todos los cambios en la rama estable 1.26 estarán relacionados con la eliminación de errores y vulnerabilidades graves. Pronto se formará la rama principal de nginx 1.27, en la que continuará el desarrollo de nuevas funciones. Para los usuarios normales que no tienen la tarea de garantizar la compatibilidad con módulos de terceros, se recomienda utilizar la rama principal, a partir de la cual se forman los lanzamientos del producto comercial Nginx Plus cada tres meses.

Según un informe de marzo de Netcraft, alrededor de 243 millones de sitios web ejecutan Nginx (289 millones hace un año). Nginx se utiliza en el 18.15% de todos los sitios activos (hace un año 18.94%, hace dos años 20.08%), lo que corresponde al segundo lugar en popularidad en esta categoría (la participación de Apache corresponde al 20.09% (hace un año 20.52, dos años hace 22.58%), Cloudflare - 14.12% (11.32%, 10.42%), Google - 10.41% (9.89%, 8.89%). Al mismo tiempo, considerando todos los sitios, nginx conserva su liderazgo y ocupa el 22.31% del mercado. (hace un año 25.94%, hace dos años - 31.13%), mientras que la participación de Apache corresponde al 20.17% (20.58, 23.08%), Cloudflare - 11.24% (10.17, 5.49%), OpenResty (plataforma basada en nginx y LuaJIT) - 7.93% (7.94%, 8.01%).

Entre el millón de sitios más visitados del mundo, la proporción de nginx es del 20.63% (hace un año 21.37%, hace dos años 21.79%), Cloudflare - 22.59% (hace un año 21.62%), Apache httpd - 20.09% (21.18 %). Según W3Techs, nginx se utiliza en el 34.3% de los millones de sitios más visitados, en abril del año pasado esta cifra era del 34.5%, el año anterior, del 33.1%. La participación de Apache cayó durante el año del 32.2% al 30.1%, y la participación de Microsoft IIS cayó del 5.6% al 4.8%. La participación de Node.js aumentó del 2.4% al 3.2% y la participación de LiteSpeed ​​del 11.8% al 12.9%.

Las mejoras más notables agregadas durante el desarrollo de la rama ascendente 1.25.x:

  • Se agregó el módulo ngx_http_v3 con soporte experimental para el protocolo HTTP/3. Para construir el módulo, se proporciona la opción “--with-http_v3_module”. HTTP/3 define el uso del protocolo QUIC (Quick UDP Internet Connections) como transporte para HTTP/2. QUIC es una extensión del protocolo UDP que admite la multiplexación de múltiples conexiones y proporciona métodos de cifrado equivalentes a TLS/SSL. El protocolo fue creado en 2013 por Google como una alternativa a la combinación TCP+TLS para la Web, resolviendo problemas con largos tiempos de configuración y negociación de conexiones en TCP y eliminando retrasos cuando los paquetes se pierden durante la transferencia de datos.
  • Se ha agregado una directiva "http2" separada para habilitar selectivamente el protocolo HTTP/2 en relación con los servidores (se puede usar en bloques de "servidor" separados). El parámetro "http2" en la directiva "escuchar" ha quedado obsoleto.
  • Se ha reforzado la protección contra la actividad anormal de los clientes HTTP/2 y, en particular, contra los ataques DoS de la clase "Rapid Reset", en los que se crea una gran cantidad de subprocesos que se restablecen inmediatamente dentro de una única conexión HTTP/2. En la configuración predeterminada, dichos ataques están limitados por el límite en el número de solicitudes por conexión "keepalive_requests" (después de cada 1000 solicitudes, la conexión se restablecerá) y las restricciones "limit_req". Para responder antes a la inundación de solicitudes a través de una gran cantidad de subprocesos, se ha agregado una limitación adicional que no permite la creación de más de 256 (2 * max_concurrent_streams) nuevos subprocesos por ciclo de procesamiento de eventos de forma predeterminada. El nuevo límite permite comenzar a bloquear solicitudes antes de que se alcance el límite general en el número de subprocesos simultáneos, por ejemplo, cuando los subprocesos se procesan de forma asincrónica o se vacían.
  • Se ha agregado soporte para servidores virtuales al módulo de transmisión, cuya configuración se define en el bloque "servidor {...}" mediante la directiva nombre_servidor. servidor { nombre_servidor ~^(www\.)?(.+)$; proxy_pass www.$2:12345; }
  • Se agregó un nuevo módulo ngx_stream_pass_module, diseñado para reenviar las conexiones recibidas directamente a cualquier conector de escucha asociado con módulos como http, stream y mail. transmitir {servidor {escuchar 12345 ssl; ssl_certificate dominio.crt; ssl_certificate_key dominio.key; pase 127.0.0.1:8000; } }
  • La directiva de escucha del módulo de transmisión implementa soporte para los parámetros "diferido" (habilita la aceptación diferida), "accept_filter" (filtro de conexión entrante aplicado antes de llamar a la función de aceptación) y "setfib" (configuración de la tabla de enrutamiento).
  • Para algunas arquitecturas, se ha implementado soporte para determinar el tamaño de bloque (línea de caché) utilizado para transferir datos entre la memoria caché de la CPU y la memoria.
  • Gestión mejorada de los buffers utilizados al detectar automáticamente conexiones HTTP/2.
  • Se ha mejorado el rendimiento al iniciar configuraciones con una gran cantidad de directivas de "ubicación".
  • Se eliminó la compatibilidad con la tecnología Server push en HTTP/2.
  • Se eliminó el soporte para la directiva "ssl", anteriormente obsoleta.

La versión estable del proyecto FreeNginx 1.26.0, que desarrolla una bifurcación de Nginx, se publicó hace dos semanas. La bifurcación está siendo desarrollada por Maxim Dunin, uno de los desarrolladores clave de Nginx. FreeNginx se posiciona como un proyecto sin fines de lucro que proporciona desarrollo del código base de Nginx sin intervención corporativa.

Fuente: opennet.ru

Añadir un comentario