Ya fue liberada la nueva versión de nginx 1.22.0
Tras 13 meses de desarrollo se dio a conocer la nueva rama estable del servidor HTTP de alto rendimiento y servidor proxy multiprotocolo nginx 1.22.0, que incorpora los cambios acumulados en la rama principal 1.21.x.
En el futuro, todos los cambios en la rama estable 1.22 estarán relacionados con la eliminación de errores y vulnerabilidades graves. Próximamente se formará la rama principal de nginx 1.23, en la que continuará el desarrollo de nuevas funciones.
Para los usuarios comunes que no tienen la tarea de garantizar la compatibilidad con módulos de terceros, se recomienda utilizar la rama principal, en base a la cual se forman versiones del producto comercial Nginx Plus cada tres meses.
Principales novedades de nginx 1.22.0
En esta nueva versión que se presenta de nginx 1.22.0 se destaca la protección mejorada contra ataques de clase «Contrabando de solicitudes HTTP» en sistemas front-end-backend que le permiten acceder al contenido de las solicitudes de otros usuarios procesadas en el mismo hilo entre el front-end y el back-end. Nginx ahora siempre devuelve un error al usar el método CONNECT; al especificar simultáneamente los encabezados «Content-Length» y «Transfer-Encoding»; cuando hay espacios o caracteres de control en la cadena de consulta, el nombre del encabezado HTTP o el valor del encabezado «Host».
Otra de las novedades que se destaca de esta nueva versión es que se agregó soporte para variables a las directivas «proxy_ssl_certificate», «proxy_ssl_certificate_key», «grpc_ssl_certificate», «grpc_ssl_certificate_key», «uwsgi_ssl_certificate» y «uwsgi_ssl_certificate_key».
Ademas, tambien se destaca que se agregó soporte para el modo «»pipelining» para enviar múltiples solicitudes POP3 o IMAP en la misma conexión al módulo de proxy de correo, así como una nueva directiva «max_errors» que especifica la cantidad máxima de errores de protocolo después de los cuales se cerrará la conexión.
Los encabezados «Auth-SSL-Protocol» y «Auth-SSL-Cipher» se pasan al servidor de autenticación del proxy de correo, ademas de que se agregó soporte para la extensión ALPN TLS al módulo de transmisión. Para determinar la lista de protocolos ALPN soportados (h2, http/1.1), se propone la directiva ssl_alpn y para obtener información sobre el protocolo ALPN acordado con el cliente, la variable $ssl_alpn_protocol.
De los demás cambios que se destacan:
- Bloqueo de solicitudes HTTP/1.0 que incluyen el encabezado HTTP «Transfer-Encoding» (introducido en la versión del protocolo HTTP/1.1).
- La plataforma FreeBSD ha mejorado la compatibilidad con la llamada al sistema sendfile, que está diseñada para organizar una transferencia directa de datos entre un descriptor de archivo y un socket . El modo sendfile(SF_NODISKIO) está habilitado permanentemente y se ha agregado soporte para el modo sendfile(SF_NOCACHE).
- El parámetro «fastopen» se ha agregado al módulo de transmisión, lo que habilita el modo «TCP Fast Open» para los sockets de escucha.
- Se corrigió el escape de los caracteres «»», «<«, «>», «\», «^», «`», «{«, «|» y «}» al usar el proxy con cambio de URI.
- Se ha añadido la directiva proxy_half_close al módulo stream , con la que se puede configurar el comportamiento cuando una conexión TCP proxy se cierra por uno de los lados («TCP half-close»).
- Se agregó una nueva directiva mp4_start_key_frame al módulo ngx_http_mp4_module para transmitir una transmisión de video a partir de un cuadro clave.
- Se agregó la variable $ssl_curve para devolver el tipo de curva elíptica seleccionada para la negociación de claves en una sesión TLS.
- La directiva sendfile_max_chunk cambió el valor predeterminado a 2 megabytes;
- Compatibilidad proporcionada con la biblioteca OpenSSL 3.0. Se agregó soporte para llamar a SSL_sendfile() cuando se usa OpenSSL 3.0.
- El ensamblaje con la biblioteca PCRE2 está habilitado de forma predeterminada y proporciona funciones para procesar expresiones regulares.
- Al cargar certificados de servidor, se ha ajustado el uso de niveles de seguridad admitidos desde OpenSSL 1.1.0 y establecidos a través del parámetro «@SECLEVEL=N» en la directiva ssl_ciphers.
- Se eliminó la compatibilidad con el paquete de cifrado de exportación.
- En la API de filtrado del cuerpo de la solicitud, se permite el almacenamiento en búfer de los datos procesados.
- Se eliminó la compatibilidad para establecer conexiones HTTP/2 mediante la extensión NPN (Next Protocol Negotiation) en lugar de ALPN.
Finalmente si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.