انتشار nginx 1.19.7، njs 0.5.1 و NGINX Unit 1.22.0

شاخه اصلی nginx 1.19.7 منتشر شده است که در آن توسعه ویژگی های جدید ادامه دارد (در شاخه پایدار 1.18 با پشتیبانی موازی، فقط تغییرات مربوط به حذف خطاها و آسیب پذیری های جدی ایجاد می شود).

تغییرات اصلی:

  • وقتی اتصالات رایگان یک فرآیند کارگر تمام می شود، nginx اکنون نه تنها اتصالات نگهدارنده، بلکه اتصالاتی را که منتظر بسته شدن سوکت هستند نیز می بندد.
  • کد پردازش اتصال در HTTP/2 نزدیک به اجرای HTTP/1.x است. پشتیبانی از تنظیمات فردی "http2_recv_timeout"، "http2_idle_timeout" و "http2_max_requests" به نفع دستورالعمل های عمومی "keepalive_timeout" و "keepalive_requests" متوقف شده است.
  • تنظیمات "http2_max_field_size" و "http2_max_header_size" حذف شده اند و باید به جای آن از "large_client_header_buffers" استفاده شود.

در همان زمان، njs 0.5.1 منتشر شد، یک مفسر جاوا اسکریپت برای وب سرور nginx. مفسر njs استانداردهای ECMAScript را پیاده سازی می کند و به شما امکان می دهد توانایی nginx را برای پردازش درخواست ها با استفاده از اسکریپت های موجود در پیکربندی گسترش دهید. اسکریپت ها را می توان در یک فایل پیکربندی برای تعریف منطق پیشرفته برای پردازش درخواست ها، ایجاد پیکربندی، ایجاد پاسخ به صورت پویا، تغییر درخواست/پاسخ یا ایجاد سریع خرد برای حل مشکلات در برنامه های وب استفاده کرد.

نسخه جدید دستورالعمل "js_header_filter" را اضافه می کند که به شما امکان می دهد یک تابع جاوا اسکریپت را برای فیلتر کردن و تغییر سرصفحه های پاسخ دلخواه تنظیم کنید: js_import foo.js; مکان / { 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 ? تعداد(r.args.len) : 0; r.headersOut['Set-Cookie'] = cookies.filter(v=>v.length > len); } صادرات پیش فرض {filter};

همچنین متد ngx.fetch() اضافه شده است که Fetch API را پیاده سازی می کند که عملکرد سرویس گیرنده HTTP را فراهم می کند. این روش از پردازش بدنه، هدرها، گزینه های buffer_size و max_response_body_size پشتیبانی می کند. شی Response برگشتی از متدهای arrayBuffer()، bodyUsed، json()، headers، ok، redirect، status، statusText، text()، نوع و url پشتیبانی می کند و شی Header از get()، getAll() و has() پشتیبانی می کند. روش ها . تابع fetch(r) { ngx.fetch('http://nginx.org/') .then(reply => reply.text()) .then(body => r.return(200, body)) .catch (e => r.return(501, e.message)); }

همچنین می توانید به انتشار سرور برنامه NGINX Unit 1.22 توجه کنید که راه حلی برای اجرای برنامه های کاربردی وب در زبان های برنامه نویسی مختلف (Python، PHP، Perl، Ruby، Go، JavaScript/Node.js و جاوا) ارائه می دهد. واحد NGINX می تواند چندین برنامه را به طور همزمان در زبان های برنامه نویسی مختلف اجرا کند که پارامترهای راه اندازی آن ها را می توان به صورت پویا بدون نیاز به ویرایش فایل های پیکربندی و راه اندازی مجدد تغییر داد. کد به زبان C نوشته شده و تحت مجوز آپاچی 2.0 توزیع شده است.

نسخه جدید NGINX Unit بر بهبود پایداری، گسترش ابزارهای تست و رفع اشکال تمرکز داشت. در بسته های تولید شده برای لینوکس، کاربر و گروهی که واحد NGINX تحت آن اجرا می شود، تغییر کرده است. به جای nobody:nobody، فرآیندها اکنون تحت واحد کاربر منفرد در گروه واحد اجرا می شوند. سازگاری با Stream API اشیاء ServerRequest و ServerResponse از ماژول Node.js تضمین شده است. گزینه "path" برای برنامه های پایتون اجازه می دهد تا چندین دایرکتوری مشخص شود.

منبع: opennet.ru

اضافه کردن نظر