Llançament de nginx 1.19.7, njs 0.5.1 i NGINX Unit 1.22.0

S'ha llançat la branca principal de nginx 1.19.7, dins de la qual continua el desenvolupament de noves característiques (a la branca estable 1.18 suportada en paral·lel, només es fan canvis relacionats amb l'eliminació d'errors i vulnerabilitats greus).

Principals canvis:

  • Quan un procés de treball es queda sense connexions gratuïtes, ara nginx tanca no només les connexions keepalive, sinó també les connexions que esperen que es tanqui el sòcol ("permanent tancat").
  • El codi de processament de connexió a HTTP/2 és proper a la implementació HTTP/1.x. El suport per a la configuració individual "http2_recv_timeout", "http2_idle_timeout" i "http2_max_requests" s'ha interromput a favor de les directives generals "keepalive_timeout" i "keepalive_requests".
  • La configuració "http2_max_field_size" i "http2_max_header_size" s'ha eliminat i s'hauria d'utilitzar "large_client_header_buffers".

Al mateix temps, es va llançar njs 0.5.1, un intèrpret de JavaScript per al servidor web nginx. L'intèrpret njs implementa els estàndards ECMAScript i us permet ampliar la capacitat de nginx per processar sol·licituds mitjançant scripts a la configuració. Els scripts es poden utilitzar en un fitxer de configuració per definir la lògica avançada per processar les sol·licituds, generar una configuració, generar dinàmicament una resposta, modificar una sol·licitud/resposta o crear ràpidament stubs per resoldre problemes en aplicacions web.

La nova versió afegeix la directiva "js_header_filter", que us permet establir una funció JavaScript per filtrar i canviar les capçaleres de resposta arbitràries: js_import foo.js; ubicació / { js_header_filter foo.filter; proxy_pass http://127.0.0.1:8081/; } foo.js: function filter(r) { var cookies = r.headersOut['Set-Cookie']; var len = r.args.len ? Nombre (r.args.len): 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } exportació per defecte {filtre};

També s'ha afegit el mètode ngx.fetch(), que implementa l'API Fetch, que proporciona la funcionalitat del client HTTP. El mètode admet el processament de les opcions de body, headers, buffer_size i max_response_body_size. L'objecte Response retornat admet els mètodes arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type i url, i l'objecte Header admet get(), getAll() i has() mètodes. funció fetch(r) { ngx.fetch('http://nginx.org/') .then(reply => reply.text()) .then(body => r.return(200, cos)) .catch (e => r.return(501, missatge e.)); }

També podeu destacar la publicació del servidor d'aplicacions NGINX Unit 1.22, que ofereix una solució per executar aplicacions web en diversos llenguatges de programació (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js i Java). La unitat NGINX pot executar simultàniament diverses aplicacions en diferents llenguatges de programació, els paràmetres de llançament de les quals es poden canviar de forma dinàmica sense necessitat d'editar fitxers de configuració i reiniciar-los. El codi està escrit en C i distribuït sota la llicència Apache 2.0.

La nova versió de NGINX Unit es va centrar a millorar l'estabilitat, ampliar les eines de prova i corregir errors. Als paquets generats per a Linux, s'han canviat l'usuari i el grup en què s'executa la unitat NGINX. En lloc de nobody:nobody, els processos ara s'executen sota la unitat d'usuari individual del grup d'unitats. Compatibilitat assegurada amb l'API Stream dels objectes ServerRequest i ServerResponse del mòdul Node.js. L'opció "camí" per a les aplicacions de Python permet especificar diversos directoris.

Font: opennet.ru

Afegeix comentari