إصدار 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، وهو مترجم JavaScript لخادم الويب 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

إضافة تعليق