إصدار nginx 1.25.3 و njs 0.8.2 و NGINX Unit 1.31.1

تم إصدار الفرع الرئيسي لـ nginx 1.25.3، والذي يستمر من خلاله تطوير الميزات الجديدة. يحتوي الفرع المستقر 1.24.x الذي تتم صيانته بالتوازي فقط على التغييرات المتعلقة بإزالة الأخطاء ونقاط الضعف الخطيرة. في المستقبل، استنادًا إلى الفرع الرئيسي 1.25.x، سيتم تشكيل فرع مستقر 1.26. كود المشروع مكتوب بلغة C ويتم توزيعه بموجب ترخيص BSD.

من بين التغييرات:

  • تم تعزيز الحماية ضد النشاط غير الطبيعي لعملاء HTTP/2، وعلى وجه الخصوص، ضد هجمات DoS من فئة "إعادة التعيين السريع"، حيث يتم إنشاء عدد كبير من سلاسل العمليات التي يتم إعادة تعيينها على الفور ضمن اتصال HTTP/2 واحد. في التكوين الافتراضي، تكون مثل هذه الهجمات محدودة بالحد الأقصى لعدد الطلبات لكل اتصال "keepalive_requests" (بعد كل 1000 طلب سيتم إعادة تعيين الاتصال) والقيود "limit_req". للاستجابة في وقت سابق للطلبات المتدفقة من خلال عدد كبير من سلاسل الرسائل، تمت إضافة قيد إضافي لا يسمح بإنشاء أكثر من 256 (2 * max_concurrent_streams) سلاسل رسائل جديدة لكل دورة معالجة حدث بشكل افتراضي. يتيح الحد الجديد إمكانية بدء حظر الطلبات قبل الوصول إلى الحد الإجمالي لعدد سلاسل الرسائل المتزامنة، على سبيل المثال عندما تتم معالجة سلاسل الرسائل بشكل غير متزامن أو يتم مسحها. تم أيضًا تضمين تغيير مماثل في إصدار angie 1.3.1 (nginx fork)، الذي تم نشره قبل أسبوع.
  • تحسين إدارة المخازن المؤقتة المستخدمة عند اكتشاف اتصالات HTTP/2 تلقائيًا.
  • تم تحسين أداء إطلاق التكوينات مع عدد كبير من توجيهات "الموقع".
  • تم إصلاح عطل في عملية العامل كان من الممكن أن يحدث عند محاولة استخدام HTTP/2 بدون بروتوكول طبقة المقابس الآمنة (SSL).
  • تم إصلاح المعالجة غير الصحيحة لرأس "الحالة" الذي تم إرجاعه بواسطة الواجهة الخلفية بنص توضيحي فارغ.
  • تم إصلاح تسرب الذاكرة أثناء إعادة التكوين الذي حدث عند الإنشاء باستخدام مكتبة PCRE2.
  • تم تقديم جزء كبير من الإصلاحات والتحسينات المتعلقة بدعم بروتوكول HTTP/3.

في الوقت نفسه، njs 0.8.2، وهو مترجم جافا سكريبت لـ قاعدة بيانات للانترنت nginx. يُطبّق مُفسّر njs معايير ECMAScript، ويتيح لك توسيع إمكانيات معالجة الطلبات في nginx باستخدام نصوص برمجية للتكوين. يُمكن استخدام هذه النصوص في ملف التكوين لتحديد منطق مُتقدّم لمعالجة الطلبات، وإنشاء التكوين، وإنشاء الاستجابات ديناميكيًا، وتعديل الطلبات/الاستجابات، أو إنشاء نماذج أولية بسرعة لحلّ المشكلات في تطبيقات الويب. يُضيف الإصدار الجديد كائن وحدة تحكم، يُوفّر الدوال error() وinfo() وlog() وtime() وtimeEnd() وwarn(). كما أُضيفت الدالة fs.existsSync() إلى وحدة fs.

يمكنك أيضًا ملاحظة نشر خادم التطبيقات NGINX Unit 1.31.1 الذي يوفر حلاً لتشغيل تطبيقات الويب بمختلف لغات البرمجة (Python وPHP وPerl وRuby وGo وJavaScript/Node.js وJava). يمكن لوحدة NGINX تشغيل تطبيقات متعددة في وقت واحد بلغات برمجة مختلفة، ويمكن تغيير معلمات التشغيل الخاصة بها ديناميكيًا دون الحاجة إلى تحرير ملفات التكوين وإعادة التشغيل. بالإضافة إلى إصلاحات الأخطاء، يسمح الإصدار الجديد في وحدة Wasm بتحميل بيانات أكبر من 4 جيجابايت، وعند الاستجابة، من الممكن تعيين رموز حالة HTTP.

المصدر: opennet.ru

إضافة تعليق