Keluaran nginx 1.19.7, njs 0.5.1 dan NGINX Unit 1.22.0

Cawangan utama nginx 1.19.7 telah dikeluarkan, di mana pembangunan ciri baharu diteruskan (dalam cabang stabil 1.18 yang disokong selari, hanya perubahan yang berkaitan dengan penghapusan ralat dan kelemahan serius dibuat).

Perubahan utama:

  • Apabila proses pekerja kehabisan sambungan percuma, nginx kini menutup bukan sahaja sambungan keepalive, tetapi juga sambungan menunggu soket ditutup ("berlarutan dekat").
  • Kod pemprosesan sambungan dalam HTTP/2 adalah hampir dengan pelaksanaan HTTP/1.x. Sokongan untuk tetapan individu "http2_recv_timeout", "http2_idle_timeout" dan "http2_max_requests" telah dihentikan dan memihak kepada arahan umum "keepalive_timeout" dan "keepalive_requests".
  • Tetapan "http2_max_field_size" dan "http2_max_header_size" telah dialih keluar dan "large_client_header_buffers" harus digunakan sebaliknya.

Pada masa yang sama, njs 0.5.1, penterjemah JavaScript untuk pelayan web nginx. Jurubahasa njs melaksanakan piawaian ECMAScript dan membolehkan anda melanjutkan keupayaan pemprosesan permintaan nginx menggunakan skrip konfigurasi. Skrip boleh digunakan dalam fail konfigurasi untuk menentukan logik pemprosesan permintaan lanjutan, menjana konfigurasi, menjana respons secara dinamik, mengubah suai permintaan/respons atau mencipta stub dengan cepat untuk menyelesaikan isu dalam aplikasi web.

Versi baharu menambah arahan "js_header_filter", yang membolehkan anda menetapkan fungsi JavaScript untuk menapis dan menukar pengepala tindak balas sewenang-wenangnya: js_import foo.js; lokasi / { js_header_filter foo.filter; proxy_pass http://127.0.0.1:8081/; } foo.js: penapis fungsi(r) { var cookies = r.headersOut['Set-Cookie']; var len = r.args.len ? Nombor(r.args.len): 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } eksport lalai {penapis};

Turut ditambah ialah kaedah ngx.fetch(), yang melaksanakan API Ambil, yang menyediakan kefungsian klien HTTP. Kaedah ini menyokong pemprosesan pilihan body, header, buffer_size dan max_response_body_size. Objek Respons yang dikembalikan menyokong arrayBuffer(), bodyUsed, json(), header, ok, redirect, status, statusText, text(), type dan kaedah url, dan objek Header menyokong get(), getAll() dan has() kaedah . 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)); }

Anda juga boleh menandakan penerbitan tersebut pelayan Unit NGINX 1.22, penyelesaian untuk menjalankan aplikasi web yang ditulis dalam pelbagai bahasa pengaturcaraan (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js, dan Java). Unit NGINX boleh menjalankan berbilang aplikasi yang ditulis dalam bahasa yang berbeza secara serentak, dan parameter pelancarannya boleh diubah secara dinamik tanpa perlu mengedit fail konfigurasi atau memulakan semula. Kod ini ditulis dalam C dan dilesenkan di bawah lesen Apache 2.0.

Keluaran Unit NGINX baharu memberi tumpuan kepada peningkatan kestabilan, mengembangkan keupayaan pengujian dan membetulkan pepijat. Linux Pengguna dan kumpulan di mana Unit NGINX berjalan dalam pakej telah diubah. Daripada nobody:nobody, proses kini dijalankan di bawah pengguna berasingan bernama unit dalam kumpulan unit. Keserasian dengan Stream API untuk objek ServerRequest dan ServerResponse daripada modul Node.js telah dipastikan. Pelbagai direktori kini boleh ditentukan dalam pilihan "laluan" untuk aplikasi Python.

Sumber: opennet.ru

Beli pengehosan yang boleh dipercayai untuk tapak dengan perlindungan DDoS, pelayan VPS VDS 🔥 Beli pengehosan laman web yang boleh dipercayai dengan perlindungan DDoS, pelayan VPS VDS | ProHoster