إصدار nginx 1.20.0

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

وفقًا لتقرير شهر مارس من Netcraft، يتم استخدام nginx في 20.15% من جميع المواقع النشطة (قبل عام 19.56%، قبل عامين 20.73%)، وهو ما يتوافق مع المركز الثاني من حيث الشعبية في هذه الفئة (حصة Apache تعادل 25.38%). (قبل عام 27.64٪)، جوجل - 10.09٪، Cloudflare - 8.51٪ وفي الوقت نفسه، عند النظر في جميع المواقع، تحتفظ Nginx بريادتها وتحتل 35.34٪ من السوق (قبل عام 36.91٪، قبل عامين - 27.52٪)، بينما تبلغ حصة Apache 25.98٪، وOpenResty (منصة تعتمد على nginx وLuaJIT.) - 6.55٪، وMicrosoft IIS - 5.96٪.

من بين المليون موقع الأكثر زيارة في العالم، تبلغ حصة nginx 25.55% (قبل عام 25.54%، قبل عامين 26.22%). حاليًا، هناك حوالي 419 مليون موقع ويب يشغل Nginx (459 مليونًا قبل عام). وفقًا لـ W3Techs، يتم استخدام nginx في 33.7% من المواقع من بين المليون موقع الأكثر زيارة، وفي أبريل من العام الماضي كان هذا الرقم 31.9%، في العام السابق - 41.8% (يتم تفسير الانخفاض من خلال الانتقال إلى المحاسبة المنفصلة لـ Cloudflare http الخادم). انخفضت حصة Apache على مدار العام من 39.5% إلى 34%، وحصة Microsoft IIS من 8.3% إلى 7%. ارتفعت حصة LiteSpeed ​​من 6.3% إلى 8.4%، وNode.js من 0.8% إلى 1.2%. في روسيا، يتم استخدام nginx في 79.1% من المواقع الأكثر زيارة (قبل عام - 78.9%).

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

  • تمت إضافة القدرة على التحقق من شهادات العميل باستخدام خدمات خارجية بناءً على بروتوكول OCSP (بروتوكول حالة الشهادة عبر الإنترنت). لتمكين التحقق، يُقترح توجيه ssl_ocsp، لتكوين حجم ذاكرة التخزين المؤقت - ssl_ocsp_cache، لإعادة تعريف عنوان URL لمعالج OCSP المحدد في الشهادة - ssl_ocsp_responder.
  • يتم تضمين وحدة ngx_stream_set_module، والتي تسمح لك بتعيين قيمة للخادم المتغير {استماع 12345؛ تعيين $ صحيح 1؛ }
  • تمت إضافة توجيه proxy_cookie_flags لتحديد علامات ملفات تعريف الارتباط في اتصالات الوكيل. على سبيل المثال، لإضافة علامة "httponly" إلى ملف تعريف الارتباط "one"، وعلامتي "nosecure" و"samesite=strict" لجميع ملفات تعريف الارتباط الأخرى، يمكنك استخدام البنية التالية: proxy_cookie_flags one httponly؛ proxy_cookie_flags ~ noscure Samesite=strict;

    يتم أيضًا تنفيذ توجيه userid_flags مشابه لإضافة علامات إلى ملفات تعريف الارتباط لوحدة ngx_http_userid.

  • تمت إضافة التوجيهات "ssl_conf_command" و"proxy_ssl_conf_command" و"grpc_ssl_conf_command" و"uwsgi_ssl_conf_command"، والتي يمكنك من خلالها تعيين معلمات عشوائية لتكوين OpenSSL. على سبيل المثال، لتحديد أولويات تشفير ChaCha والتكوين المتقدم لشفرات TLSv1.3، يمكنك تحديد خيارات ssl_conf_command PrioritizeChaCha؛ ssl_conf_command Ciphersuites TLS_CHACHA20_POLY1305_SHA256;
  • تمت إضافة التوجيه "ssl_reject_handshake"، الذي يرشدك إلى رفض جميع محاولات التفاوض على اتصالات SSL (على سبيل المثال، يمكن استخدامه لرفض جميع المكالمات ذات أسماء المضيفين غير المعروفة في حقل SNI). الخادم { استمع 443 SSL؛ ssl_reject_handshake قيد التشغيل؛ } الخادم { استمع 443 ssl؛ اسم الخادم example.com; ssl_certificate example.com.crt; ssl_certificate_key example.com.key; }
  • تمت إضافة توجيه proxy_smtp_auth إلى وكيل البريد، مما يسمح لك بمصادقة المستخدم على الواجهة الخلفية باستخدام أمر AUTH وآلية PLAIN SASL.
  • تمت إضافة التوجيه "keepalive_time"، الذي يحد من العمر الإجمالي لكل اتصال استمرار، وبعد ذلك سيتم إغلاق الاتصال (يجب عدم الخلط بينه وبين keepalive_timeout، الذي يحدد وقت عدم النشاط الذي يتم بعده إغلاق اتصال البقاء).
  • تمت إضافة متغير $connection_time، والذي من خلاله يمكنك الحصول على معلومات حول مدة الاتصال بالثواني وبدقة ميلي ثانية.
  • تمت إضافة معلمة "min_free" إلى توجيهات "proxy_cache_path" و"fastcgi_cache_path" و"scgi_cache_path" و"uwsgi_cache_path"، والتي تنظم حجم ذاكرة التخزين المؤقت بناءً على تحديد الحد الأدنى لحجم مساحة القرص الحرة.
  • لقد تم تكييف التوجيهات "lingering_ Close" و"lingering_time" و"lingering_timeout" للعمل مع HTTP/2.
  • رمز معالجة الاتصال في 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" بدلاً من ذلك.
  • تمت إضافة خيار سطر الأوامر الجديد "-e"، والذي يسمح لك بتحديد ملف بديل لكتابة سجل الأخطاء، والذي سيتم استخدامه بدلاً من السجل المحدد في الإعدادات. بدلاً من اسم الملف، يمكنك تحديد القيمة الخاصة stderr.

المصدر: opennet.ru

إضافة تعليق