Rilis nginx 1.19.7, njs 0.5.1 dan NGINX Unit 1.22.0

Cabang utama nginx 1.19.7 telah dirilis, di mana pengembangan fitur-fitur baru terus berlanjut (di cabang stabil 1.18 yang didukung paralel, hanya perubahan yang terkait dengan penghapusan kesalahan dan kerentanan serius yang dilakukan).

Perubahan besar:

  • Ketika proses pekerja kehabisan koneksi bebas, nginx sekarang menutup tidak hanya koneksi yang masih hidup, tetapi juga koneksi yang menunggu soket ditutup (β€œlingering close”).
  • Kode pemrosesan koneksi di HTTP/2 mirip dengan implementasi HTTP/1.x. Dukungan untuk pengaturan individual "http2_recv_timeout", "http2_idle_timeout" dan "http2_max_requests" telah dihentikan demi arahan umum "keepalive_timeout" dan "keepalive_requests".
  • Pengaturan "http2_max_field_size" dan "http2_max_header_size" telah dihapus dan "large_client_header_buffers" harus digunakan sebagai gantinya.

Pada saat yang sama, njs 0.5.1 dirilis, penerjemah JavaScript untuk server web nginx. Penerjemah njs mengimplementasikan standar ECMAScript dan memungkinkan Anda memperluas kemampuan nginx untuk memproses permintaan menggunakan skrip dalam konfigurasi. Skrip dapat digunakan dalam file konfigurasi untuk menentukan logika tingkat lanjut untuk memproses permintaan, menghasilkan konfigurasi, menghasilkan respons secara dinamis, memodifikasi permintaan/respons, atau dengan cepat membuat stub untuk memecahkan masalah dalam aplikasi web.

Versi baru menambahkan arahan β€œjs_header_filter”, yang memungkinkan Anda mengatur fungsi JavaScript untuk memfilter dan mengubah header respons sewenang-wenang: js_import foo.js; lokasi / { js_header_filter foo.filter; proxy_pass http://127.0.0.1:8081/; } foo.js: fungsi filter(r) { var cookie = r.headersOut['Set-Cookie']; var len = r.args.len ? Nomor(r.args.len) : 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } ekspor bawaan {filter};

Juga ditambahkan metode ngx.fetch(), yang mengimplementasikan Fetch API, yang menyediakan fungsionalitas klien HTTP. Metode ini mendukung pemrosesan opsi body, header, buffer_size dan max_response_body_size. Objek Respon yang dikembalikan mendukung metode arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type dan url, dan objek Header mendukung get(), getAll() dan has() metode. fungsi mengambil(r) { ngx.fetch('http://nginx.org/') .then(reply => reply.text()) .then(body => r.return(200, body)) .catch (e => r.return(501, e.pesan)); }

Anda juga dapat mencatat publikasi server aplikasi NGINX Unit 1.22, yang menawarkan solusi untuk menjalankan aplikasi web dalam berbagai bahasa pemrograman (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js dan Java). Unit NGINX dapat menjalankan beberapa aplikasi secara bersamaan dalam bahasa pemrograman berbeda, parameter peluncurannya dapat diubah secara dinamis tanpa perlu mengedit file konfigurasi dan memulai ulang. Kode ini ditulis dalam C dan didistribusikan di bawah lisensi Apache 2.0.

Rilis baru Unit NGINX berfokus pada peningkatan stabilitas, perluasan alat pengujian, dan perbaikan bug. Dalam paket yang dibuat untuk Linux, pengguna dan grup tempat Unit NGINX dijalankan telah diubah. Daripada tidak ada: tidak ada, proses sekarang berjalan di bawah unit pengguna individual di unit grup. Memastikan kompatibilitas dengan Stream API objek ServerRequest dan ServerResponse dari modul Node.js. Opsi "jalur" untuk aplikasi Python memungkinkan beberapa direktori ditentukan.

Sumber: opennet.ru

Tambah komentar