nginx 1.19.7, njs 0.5.1 un NGINX vienības 1.22.0 izlaišana

Ir izlaista nginx 1.19.7 galvenā filiāle, kuras ietvaros turpinās jaunu līdzekļu izstrāde (paralēli atbalstītajā stabilajā zarā 1.18 tiek veiktas tikai izmaiņas, kas saistītas ar nopietnu kļūdu un ievainojamību novēršanu).

Galvenās izmaiņas:

  • Kad darba procesam beidzas brīvie savienojumi, nginx tagad aizver ne tikai uzturošos savienojumus, bet arī savienojumus ilgstošas ​​aizvēršanas stāvoklī.
  • HTTP/2 savienojuma apstrādes kods ir pietuvināts HTTP/1.x ieviešanai. Atbalsts atsevišķiem iestatījumiem "http2_recv_timeout", "http2_idle_timeout" un "http2_max_requests" ir pārtraukts, tā vietā izmantojot vispārīgās direktīvas "keepalive_timeout" un "keepalive_requests".
  • Iestatījumi "http2_max_field_size" un "http2_max_header_size" ir noņemti, un to vietā jāizmanto iestatījumi "large_client_header_buffers".

Tajā pašā laikā njs 0.5.1, JavaScript interpretētājs priekš tīmekļa serveris nginx. njs interpretētājs ievieš ECMAScript standartus un ļauj paplašināt nginx pieprasījumu apstrādes iespējas, izmantojot konfigurācijas skriptus. Skriptus var izmantot konfigurācijas failā, lai definētu uzlabotu pieprasījumu apstrādes loģiku, ģenerētu konfigurācijas, dinamiski ģenerētu atbildes, modificētu pieprasījumus/atbildes vai ātri izveidotu fragmentus (stubus), lai novērstu problēmas tīmekļa lietojumprogrammās.

Jaunajā versijā ir pievienota direktīva "js_header_filter", kas ļauj norādīt JavaScript funkciju patvaļīgu atbilžu virsrakstu filtrēšanai un modificēšanai: js_import foo.js; location / { 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 ? Number(r.args.len) : 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } export default {filter};

Ir pievienota arī metode ngx.fetch(), kas ievieš Fetch API, kas nodrošina HTTP klienta funkcionalitāti. Metode atbalsta body, headers, buffer_size un max_response_body_size opcijas. Atgrieztais Response objekts atbalsta arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type un url metodes, un Header objekts atbalsta get(), getAll() un has() metodes. function fetch(r) { ngx.fetch('http://nginx.org/') .then(reply => reply.text()) .then(body => r.return(200, body)) .catch(e => r.return(501, e.message)); }

Varat arī atzīmēt publikāciju serveris NGINX Unit 1.22 — risinājums tīmekļa lietojumprogrammu palaišanai, kas rakstītas dažādās programmēšanas valodās (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js un Java). NGINX Unit var vienlaikus palaist vairākas lietojumprogrammas, kas rakstītas dažādās valodās, un to palaišanas parametrus var dinamiski mainīt bez nepieciešamības rediģēt konfigurācijas failus vai restartēt datoru. Kods ir rakstīts C valodā un ir licencēts saskaņā ar Apache 2.0 licenci.

Jaunā NGINX vienības laidiena uzmanības centrā bija stabilitātes uzlabošana, testēšanas iespēju paplašināšana un kļūdu labošana. Linux Lietotājs un grupa, zem kuras NGINX Unit darbojas pakotnēs, ir mainīti. Tagad procesi, kas darbojas zem atsevišķa lietotāja ar nosaukumu unit grupā unit, vairs nav nobody:nobody. Ir nodrošināta saderība ar Stream API ServerRequest un ServerResponse objektiem no Node.js moduļa. Python lietojumprogrammām tagad "path" opcijā var norādīt vairākus direktorijus.

Avots: opennet.ru

Iegādājieties uzticamu mitināšanu vietnēm ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa vietņu mitināšanu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster