Phát hành nginx 1.19.7, njs 0.5.1 và NGINX Unit 1.22.0

Nhánh chính của nginx 1.19.7 đã được phát hành, trong đó việc phát triển các tính năng mới vẫn tiếp tục (trong nhánh ổn định được hỗ trợ song song 1.18, chỉ những thay đổi liên quan đến việc loại bỏ các lỗi nghiêm trọng và lỗ hổng bảo mật được thực hiện).

Sự thay đổi chính:

  • Khi một quy trình công nhân hết các kết nối miễn phí, nginx giờ đây không chỉ đóng các kết nối cố định mà còn cả các kết nối đang chờ ổ cắm đóng (“đóng kéo dài”).
  • Mã xử lý kết nối trong HTTP/2 gần giống với cách triển khai HTTP/1.x. Hỗ trợ cho các cài đặt riêng lẻ "http2_recv_timeout", "http2_idle_timeout" và "http2_max_requests" đã bị ngừng hỗ trợ theo các chỉ thị chung "keepalive_timeout" và "keepalive_requests".
  • Cài đặt "http2_max_field_size" và "http2_max_header_size" đã bị xóa và thay vào đó nên sử dụng "large_client_header_buffers".

Đồng thời, njs 0.5.1 đã được phát hành, một trình thông dịch JavaScript cho máy chủ web nginx. Trình thông dịch njs triển khai các tiêu chuẩn ECMAScript và cho phép bạn mở rộng khả năng xử lý yêu cầu của nginx bằng cách sử dụng các tập lệnh trong cấu hình. Tập lệnh có thể được sử dụng trong tệp cấu hình để xác định logic nâng cao để xử lý yêu cầu, tạo cấu hình, tạo phản hồi động, sửa đổi yêu cầu/phản hồi hoặc tạo nhanh các sơ khai để giải quyết các vấn đề trong ứng dụng web.

Phiên bản mới bổ sung lệnh “js_header_filter”, cho phép bạn đặt chức năng JavaScript để lọc và thay đổi các tiêu đề phản hồi tùy ý: js_import foo.js; vị trí / { 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 ? Số(r.args.len): 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } xuất mặc định {filter};

Phương thức ngx.fetch() cũng được bổ sung, phương thức này triển khai API tìm nạp, cung cấp chức năng máy khách HTTP. Phương thức này hỗ trợ xử lý các tùy chọn body, header, buffer_size và max_response_body_size. Đối tượng Response được trả về hỗ trợ các phương thức arrayBuffer(), bodyUsed, json(), headers, ok, redirect, status, statusText, text(), type và url, còn đối tượng Header hỗ trợ get(), getAll() và has() phương pháp . hàm tìm nạp(r) { ngx.fetch('http://nginx.org/') .then(reply => reply.text()) .then(body => r.return(200, body)) .catch (e => r.return(501, e.message)); }

Bạn cũng có thể lưu ý việc xuất bản máy chủ ứng dụng NGINX Unit 1.22, cung cấp giải pháp chạy các ứng dụng web bằng nhiều ngôn ngữ lập trình khác nhau (Python, PHP, Perl, Ruby, Go, JavaScript/Node.js và Java). Đơn vị NGINX có thể chạy đồng thời nhiều ứng dụng bằng các ngôn ngữ lập trình khác nhau, các tham số khởi chạy của chúng có thể được thay đổi linh hoạt mà không cần chỉnh sửa tệp cấu hình và khởi động lại. Mã được viết bằng C và được phân phối theo giấy phép Apache 2.0.

Bản phát hành mới của NGINX Unit tập trung vào việc cải thiện tính ổn định, mở rộng các công cụ kiểm tra và sửa lỗi. Trong các gói được tạo cho Linux, người dùng và nhóm mà Đơn vị NGINX chạy trong đó đã được thay đổi. Thay vì không có ai: không có ai, các quy trình hiện chạy dưới đơn vị người dùng cá nhân trong nhóm đơn vị. Đảm bảo khả năng tương thích với API Stream của các đối tượng ServerRequest và ServerResponse từ mô-đun Node.js. Tùy chọn "đường dẫn" cho các ứng dụng Python cho phép chỉ định nhiều thư mục.

Nguồn: opennet.ru

Thêm một lời nhận xét