Lanzamento de nginx 1.19.7, njs 0.5.1 e NGINX Unit 1.22.0

Lanzouse a rama principal de nginx 1.19.7, dentro da cal continúa o desenvolvemento de novas funcións (na rama estable 1.18 compatible paralelamente só se realizan cambios relacionados coa eliminación de erros graves e vulnerabilidades).

Principais cambios:

  • Cando un proceso de traballo queda sen conexións gratuítas, agora nginx pecha non só as conexións de mantemento, senón tamén as conexións que esperan a que se peche o socket ("permanecendo pechado").
  • O código de procesamento de conexión en HTTP/2 está próximo á implementación HTTP/1.x. O soporte para as configuracións individuais "http2_recv_timeout", "http2_idle_timeout" e "http2_max_requests" interrompeuse en favor das directivas xerais "keepalive_timeout" e "keepalive_requests".
  • Elimináronse os axustes "http2_max_field_size" e "http2_max_header_size" e no seu lugar deberían utilizarse "large_client_header_buffers".

Ao mesmo tempo, lanzouse njs 0.5.1, un intérprete de JavaScript para o servidor web nginx. O intérprete njs implementa os estándares ECMAScript e permítelle ampliar a capacidade de nginx para procesar solicitudes mediante scripts na configuración. Os scripts pódense usar nun ficheiro de configuración para definir a lóxica avanzada para procesar solicitudes, xerar unha configuración, xerar dinámicamente unha resposta, modificar unha solicitude/resposta ou crear rapidamente stubs para resolver problemas nas aplicacións web.

A nova versión engade a directiva “js_header_filter”, que lle permite establecer unha función JavaScript para filtrar e cambiar cabeceiras de resposta arbitrarias: js_import foo.js; localización / { js_header_filter foo.filter; pase_proxy http://127.0.0.1:8081/; } foo.js: function filter(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); } exportación predeterminada {filtro};

Tamén se engade o método ngx.fetch(), que implementa a API Fetch, que proporciona a funcionalidade do cliente HTTP. O método admite o procesamento das opcións body, headers, buffer_size e max_response_body_size. O obxecto Response devolto admite os métodos arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type e url, e o obxecto Header admite get(), getAll() e has() métodos . función fetch(r) { ngx.fetch('http://nginx.org/') .then(reply => reply.text()) .then(body => r.return(200, body)) .catch (e => r.return(501, e.mensaxe)); }

Tamén pode destacar a publicación do servidor de aplicacións NGINX Unit 1.22, que ofrece unha solución para executar aplicacións web en varias linguaxes de programación (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js e Java). NGINX Unit pode executar simultáneamente varias aplicacións en diferentes linguaxes de programación, cuxos parámetros de lanzamento poden cambiarse de forma dinámica sen necesidade de editar ficheiros de configuración e reiniciar. O código está escrito en C e distribúese baixo a licenza Apache 2.0.

A nova versión de NGINX Unit centrouse en mellorar a estabilidade, ampliar as ferramentas de proba e corrixir erros. Nos paquetes xerados para Linux, modificáronse o usuario e o grupo en que se executa a Unidade NGINX. En lugar de ninguén: ninguén, os procesos agora execútanse baixo a unidade de usuario individual na unidade de grupo. Compatibilidade garantida coa API Stream dos obxectos ServerRequest e ServerResponse do módulo Node.js. A opción "ruta" para aplicacións Python permite especificar varios directorios.

Fonte: opennet.ru

Engadir un comentario