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 telah dikeluarkan, penterjemah JavaScript untuk pelayan web nginx. Jurubahasa njs melaksanakan piawaian ECMAScript dan membolehkan anda mengembangkan keupayaan nginx untuk memproses permintaan menggunakan skrip dalam konfigurasi. Skrip boleh digunakan dalam fail konfigurasi untuk mentakrifkan logik lanjutan untuk memproses permintaan, menjana konfigurasi, menjana respons secara dinamik, mengubah suai permintaan/tindak balas atau membuat stub dengan cepat untuk menyelesaikan masalah 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 perhatikan penerbitan pelayan aplikasi Unit 1.22 NGINX, yang menawarkan penyelesaian untuk menjalankan aplikasi web dalam pelbagai bahasa pengaturcaraan (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js dan Java). Unit NGINX boleh menjalankan berbilang aplikasi secara serentak dalam bahasa pengaturcaraan yang berbeza, parameter pelancarannya boleh diubah secara dinamik tanpa perlu mengedit fail konfigurasi dan mulakan semula. Kod ini ditulis dalam C dan diedarkan di bawah lesen Apache 2.0.

Keluaran baharu Unit NGINX memfokuskan pada meningkatkan kestabilan, mengembangkan alat ujian dan membetulkan pepijat. Dalam pakej yang dijana untuk Linux, pengguna dan kumpulan di mana Unit NGINX dijalankan telah ditukar. Daripada nobody:nobody, proses kini dijalankan di bawah unit pengguna individu dalam kumpulan unit. Memastikan keserasian dengan API Strim bagi objek ServerRequest dan ServerResponse daripada modul Node.js. Pilihan "laluan" untuk aplikasi Python membolehkan berbilang direktori ditentukan.

Sumber: opennet.ru

Tambah komen