إصدار 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، وهو مترجم JavaScript لخادم الويب nginx. يطبق مترجم njs معايير ECMAScript ويسمح لك بتوسيع قدرة nginx على معالجة الطلبات باستخدام البرامج النصية في التكوين. يمكن استخدام البرامج النصية في ملف تكوين لتحديد المنطق المتقدم لمعالجة الطلبات، أو إنشاء تكوين، أو إنشاء استجابة ديناميكيًا، أو تعديل طلب/استجابة، أو إنشاء بذرة بسرعة لحل المشكلات في تطبيقات الويب.

يضيف الإصدار الجديد التوجيه "js_header_filter"، الذي يسمح لك بتعيين وظيفة JavaScript لتصفية رؤوس الاستجابة العشوائية وتغييرها: 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']; فار لين = 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. يدعم كائن الاستجابة الذي تم إرجاعه arrayBuffer() وbodyUsed وjson() والرؤوس وok وإعادة التوجيه والحالة وstatusText وtext() والنوع وعنوان url، ويدعم كائن الرأس get() وgetAll() وhas() طرق. وظيفة الجلب(r) { ngx.fetch('http://nginx.org/') .then(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 وJava). يمكن لوحدة NGINX تشغيل تطبيقات متعددة في وقت واحد بلغات برمجة مختلفة، ويمكن تغيير معلمات التشغيل الخاصة بها ديناميكيًا دون الحاجة إلى تحرير ملفات التكوين وإعادة التشغيل. الكود مكتوب بلغة C ويتم توزيعه بموجب ترخيص Apache 2.0.

ركز الإصدار الجديد من وحدة NGINX على تحسين الاستقرار وتوسيع أدوات الاختبار وإصلاح الأخطاء. في الحزم التي تم إنشاؤها لنظام التشغيل Linux، تم تغيير المستخدم والمجموعة التي تعمل وحدة NGINX ضمنها. بدلاً من لا أحد: لا أحد، يتم تشغيل العمليات الآن ضمن وحدة المستخدم الفردية في وحدة المجموعة. ضمان التوافق مع Stream API لكائنات ServerRequest وServerResponse من وحدة Node.js. يسمح خيار "المسار" لتطبيقات Python بتحديد أدلة متعددة.

المصدر: opennet.ru

إضافة تعليق