إصدار nginx 1.18.0

بعد عام من التطوير ويرد فرع مستقر جديد لخادم HTTP عالي الأداء وخادم وكيل متعدد البروتوكولات nginx 1.18.0والذي استوعب التغييرات المتراكمة داخل الفرع الرئيسي 1.17.x. في المستقبل، ستكون جميع التغييرات في الفرع المستقر 1.18 مرتبطة بإزالة الأخطاء الجسيمة ونقاط الضعف. سيتم قريبًا تشكيل الفرع الرئيسي لـ nginx 1.19، والذي سيستمر من خلاله تطوير الميزات الجديدة. بالنسبة للمستخدمين العاديين الذين ليس لديهم مهمة ضمان التوافق مع وحدات الطرف الثالث، موصى به استخدم الفرع الرئيسي، والذي على أساسه يتم إصدار إصدارات المنتج التجاري Nginx Plus كل ثلاثة أشهر.

بموجب تقرير أبريل يتم استخدام Netcraft nginx على 19.56% من جميع المواقع النشطة (قبل عام 20.73%، قبل عامين 21.02%)، وهو ما يتوافق مع المركز الثاني من حيث الشعبية في هذه الفئة (حصة Apache تساوي 27.64%، Google - 10.03%، Microsoft IIS - 4.77%) . في الوقت نفسه، عند النظر في جميع المواقع، يحتفظ Nginx بقيادته ويحتل 36.91٪ من السوق (قبل عام 27.52٪)، في حين أن حصة Apache تتوافق مع 24.73٪، Microsoft IIS - 12.85٪، Google - 3.42٪.

من بين المليون موقع الأكثر زيارة في العالم، تبلغ حصة nginx 25.54% (قبل عام 26.22%، قبل عامين 23.76%). حاليًا، هناك حوالي 459 مليون موقع ويب يشغل Nginx (397 مليونًا قبل عام). بواسطة وفق يتم استخدام W3Techs nginx في 31.9٪ من المواقع من بين المليون الأكثر زيارة، وفي أبريل من العام الماضي كان هذا الرقم 41.8٪، في العام السابق - 38٪ (يتم تفسير الانخفاض من خلال الانتقال إلى المحاسبة المنفصلة لخادم Cloudflare http). انخفضت حصة Apache على مدار العام من 43.6% إلى 38.9%، وحصة Microsoft IIS من 8.6% إلى 8.3%. في روسيا نجينكس تستخدم على 78.9% من المواقع الأكثر زيارة (قبل عام - 81%).

أبرز التحسينات التي تمت إضافتها أثناء تطوير فرع المنبع 1.17.x:

  • تمت إضافة التوجيه Limit_req_dry_run، الذي يقوم بتنشيط وضع التشغيل التجريبي، حيث لا يتم تطبيق أي قيود على كثافة معالجة الطلب (بدون حد للمعدل)، ولكنه يستمر في مراعاة عدد الطلبات التي تتجاوز الحدود في الذاكرة المشتركة؛
  • تمت إضافة التوجيه Limit_conn_dry_run، الذي يحول وحدة ngx_http_limit_conn_module إلى وضع التشغيل التجريبي، حيث لا يكون عدد الاتصالات محدودًا، ولكن يتم أخذه في الاعتبار؛
  • التوجيه المضافة "تأجيل المصادقة"، والذي يسمح لك بإضافة تأخير للطلبات غير المصرح بها برمز استجابة 401 لتقليل شدة تخمين كلمة المرور والحماية منها الهجماتمعالجة قياس زمن تنفيذ العمليات (توقيت الهجوم) عند الوصول إلى الأنظمة التي يكون الوصول إليها محدودًا كلمه السر, نتيجة الاستعلام الفرعي أو JWT (رمز ويب JSON)؛
  • تمت إضافة دعم للمتغيرات في توجيهات "limit_rate" و"limit_rate_after"، وكذلك في توجيهات "proxy_upload_rate" و"proxy_download_rate" لوحدة الدفق؛
  • في التوجيه grpc_pass تمت إضافة دعم لاستخدام متغير في المعلمة التي تحدد العنوان. إذا تم تحديد العنوان كاسم مجال، فسيتم البحث عن الاسم بين مجموعات الخوادم الموصوفة، وإذا لم يتم العثور عليه، فسيتم تحديده باستخدام محلل؛
  • تمت إضافة متغيرات جديدة $proxy_protocol_server_addr и $proxy_protocol_server_port، والتي تحتوي على عنوان الخادم والمنفذ الذي تم الحصول عليه من رأس بروتوكول PROXY؛
  • في الوحدة ngx_stream_limit_conn_module تمت إضافة المتغير $limit_conn_status، الذي يخزن نتيجة تحديد عدد الاتصالات: PASSED أو REJECTED أو REJECTED_DRY_RUN؛
  • في الوحدة ngx_http_limit_req_module تمت إضافة المتغير $limit_req_status، الذي يخزن نتيجة تحديد معدل وصول الطلبات: PASSED أو DELAYED أو REJECTED أو DELAYED_DRY_RUN أو REJECTED_DRY_RUN؛
  • بشكل افتراضي، يتم تجميع الوحدة ngx_http_postpone_filter_module;
  • تمت إضافة دعم لتبديل كتل "الموقع" المسماة باستخدام طريقة $r->internal_redirect() التي يوفرها مترجم Perl المدمج. تتضمن هذه الطريقة الآن معالجة عناوين URI باستخدام الأحرف التي تم تجاوزها؛
  • عند استخدام التوجيه "upstream" في كتلة إعدادات "upstream".مزيج» لتنظيم موازنة التحميل من خلال ربط خادم العميل، إذا قمت بتحديد قيمة مفتاح فارغة، فسيتم الآن تنشيط وضع الموازنة الموحد (Round robin)؛
  • تمت إضافة دعم للاتصال بـ ioctl(FIONREAD) إذا كان متاحًا لتجنب القراءة من اتصال سريع بمرور الوقت.

المصدر: opennet.ru

إضافة تعليق