Lanzamiento de nginx 1.19.7, njs 0.5.1 y NGINX Unit 1.22.0

Se ha lanzado la rama principal de nginx 1.19.7, dentro de la cual continúa el desarrollo de nuevas funciones (en la rama estable 1.18 compatible en paralelo, solo se realizan cambios relacionados con la eliminación de errores y vulnerabilidades graves).

Cambios importantes:

  • Cuando un proceso de trabajo se queda sin conexiones libres, nginx ahora cierra no solo las conexiones keepalive, sino también las conexiones que esperan a que se cierre el socket ("cierre persistente").
  • El código de procesamiento de conexión en HTTP/2 está cerca de la implementación de HTTP/1.x. Se ha eliminado el soporte para las configuraciones individuales "http2_recv_timeout", "http2_idle_timeout" y "http2_max_requests" en favor de las directivas generales "keepalive_timeout" y "keepalive_requests".
  • Las configuraciones "http2_max_field_size" y "http2_max_header_size" se han eliminado y en su lugar se debe utilizar "large_client_header_buffers".

Al mismo tiempo, se lanzó njs 0.5.1, un intérprete de JavaScript para el servidor web nginx. El intérprete njs implementa los estándares ECMAScript y le permite ampliar la capacidad de nginx para procesar solicitudes utilizando scripts en la configuración. Los scripts se pueden utilizar en un archivo de configuración para definir una lógica avanzada para procesar solicitudes, generar una configuración, generar dinámicamente una respuesta, modificar una solicitud/respuesta o crear rápidamente apéndices para resolver problemas en aplicaciones web.

La nueva versión agrega la directiva “js_header_filter”, que le permite configurar una función de JavaScript para filtrar y cambiar encabezados de respuesta arbitrarios: js_import foo.js; ubicación / { js_header_filter foo.filter; proxy_pass http://127.0.0.1:8081/; } foo.js: filtro de función (r) { var cookies = r.headersOut['Set-Cookie']; var len = r.args.len ? Número(r.args.len): 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } exportar {filtro} predeterminado;

También se agrega el método ngx.fetch(), que implementa la API Fetch, que proporciona funcionalidad de cliente HTTP. El método admite el procesamiento de las opciones body, headers, buffer_size y max_response_body_size. El objeto de respuesta devuelto admite métodos arrayBuffer(), bodyUsed, json(), headers, ok, redirección, status, statusText, text(), type y url, y el objeto Header admite get(), getAll() y has(). métodos. función buscar(r) { ngx.fetch('http://nginx.org/') .luego(respuesta => respuesta.text()) .luego(cuerpo => r.return(200, cuerpo)) .catch (e => r.return(501, e.mensaje)); }

También cabe destacar la publicación del servidor de aplicaciones NGINX Unit 1.22, que ofrece una solución para ejecutar aplicaciones web en varios lenguajes de programación (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js y Java). La Unidad NGINX puede ejecutar simultáneamente múltiples aplicaciones en diferentes lenguajes de programación, cuyos parámetros de inicio se pueden cambiar dinámicamente sin la necesidad de editar archivos de configuración y reiniciar. El código está escrito en C y distribuido bajo la licencia Apache 2.0.

La nueva versión de NGINX Unit se centró en mejorar la estabilidad, ampliar las herramientas de prueba y corregir errores. En los paquetes generados para Linux, se ha cambiado el usuario y el grupo bajo el cual se ejecuta la Unidad NGINX. En lugar de nadie:nadie, los procesos ahora se ejecutan bajo la unidad de usuario individual en el grupo de unidades. Compatibilidad asegurada con la API Stream de los objetos ServerRequest y ServerResponse del módulo Node.js. La opción "ruta" para aplicaciones Python permite especificar varios directorios.

Fuente: opennet.ru

Añadir un comentario