NGINX JavaScript، والمعروفة أيضًا باسم NJS، هي وحدة ديناميكية لـ NGINX تتيح توسيع الوظائف المضمنة باستخدام بناء جملة JavaScript المألوف. لغة NJS هي مجموعة فرعية من JavaScript، متوافقة مع ES5 (ECMAScript 5.1 Strict Variant) مع بعض ES6 (ECMAScript 6) والامتدادات الأحدث. انظر التوافق لمزيد من التفاصيل.
كيف يعمل
تحميل وتثبيت
توفير مستودع حزم NGINX
تثبيت وحدات NGINX JavaScript
الملفات والمواقع المثبتة
البدء باستخدام NGINX JavaScript
تحقق من تشغيل NGINX
تمكين وحدات NGINX JavaScript
أساسيات كتابة ملفات البرامج النصية .js
مرجع للكائنات والأساليب والخصائص المخصصة
مثال: أهلاً بالعالم
واجهة سطر الأوامر NJS (CLI)
البناء من المصدر
تثبيت التبعيات
استنساخ مستودع NGINX JavaScript GitHub
إنشاء أداة مساعدة لواجهة سطر الأوامر المستقلة (اختياري)
استنساخ مستودع NGINX GitHub
بناء NGINX JavaScript كوحدة نمطية لـ NGINX
المواصفات الفنية لـ NGINX JavaScript
التوزيعات المدعومة
بيئات النشر المدعومة
إصدارات NGINX المدعومة
توصيات الحجم
طرح الأسئلة والإبلاغ عن المشكلات والمساهمة
تغيير السجل
رخصة
يتم توفير NGINX JavaScript كوحدتين ديناميكيتين لـ NGINX (ngx_http_js_module وngx_stream_js_module) ويمكن إضافتهما إلى أي تثبيت NGINX Open Source أو NGINX Plus مدعوم بدون إعادة ترجمة.
تسمح وحدة NJS لمسؤولي NGINX بما يلي:
قم بإضافة التحكم المعقد في الوصول والفحوصات الأمنية قبل وصول الطلبات إلى الخوادم الأولية
التعامل مع رؤوس الاستجابة
اكتب معالجات محتوى ومرشحات مرنة وغير متزامنة والمزيد!
شاهد الأمثلة ومشاريعنا المتنوعة التي تم تطويرها باستخدام NJS:
يوسع وظائف NGINX Plus للتواصل مباشرة مع موفري الهوية المتوافقين مع OIDC، ومصادقة المستخدمين وترخيص المحتوى المقدم بواسطة NGINX Plus.
التنفيذ المرجعي لـ NGINX Plus كمزود خدمة لمصادقة SAML.
يعرض نقطة نهاية مقاييس Prometheus مباشرة من NGINX Plus.
نصيحة
يمكن أيضًا استخدام NJS مع خادم تطبيقات NGINX Unit. تعرف على المزيد حول واجهة برمجة تطبيقات التحكم الخاصة بوحدة NGINX وكيفية تحديد استدعاءات الوظائف باستخدام NJS.
اتبع هذه الخطوات لتنزيل وتثبيت ثنائيات NGINX وNGINX JavaScript Linux المترجمة مسبقًا. يمكنك أيضًا اختيار إنشاء الوحدة محليًا من كود المصدر.
اتبع هذا الدليل لإضافة مستودع حزم NGINX الرسمي إلى نظامك وتثبيت NGINX Open Source. إذا كان لديك بالفعل NGINX Open Source أو NGINX Plus مثبتًا، فتخطى جزء تثبيت NGINX في الخطوة الأخيرة.
بمجرد توفير المستودع، يمكنك تثبيت NJS عن طريق إصدار الأمر التالي:
sudo apt تثبيت nginx-module-njs
Sudo yum install nginx-module-njs
Sudo apk إضافة nginx-module-njs@nginx
Sudo zypper تثبيت nginx-module-njs
نصيحة
يتضمن مستودع الحزمة وحدة نمطية بديلة تمكن رموز التصحيح. على الرغم من أنه لا يوصى باستخدام هذه الوحدة في بيئات الإنتاج، إلا أنها قد تكون مفيدة عند تطوير التكوينات المستندة إلى NJS. لتنزيل إصدار تصحيح الأخطاء من الوحدة وتثبيته، استبدل اسم الوحدة في الأمر السابق بـ nginx-module-njs-dbg
.
تقوم البرامج النصية لتثبيت الحزمة بتثبيت وحدتين، تدعم سياقات NGINX http
و stream
.
ngx_http_js_module
تتيح وحدة NJS معالجة البيانات المنقولة عبر HTTP.
ngx_stream_js_module
تتيح وحدة NJS معالجة البيانات المنقولة عبر بروتوكولات التدفق مثل TCP وUDP.
افتراضيًا، يتم تثبيت كلتا الوحدتين في الدليل /etc/nginx/modules
.
يتضمن استخدام NJS تمكين الوحدة، وإضافة ملفات JavaScript بوظائف محددة، واستدعاء الوظائف المصدرة في ملفات تكوين NGINX.
NGINX JavaScript عبارة عن وحدة نمطية لـ NGINX Open Source أو NGINX Plus. إذا لم تكن قد قمت بذلك بالفعل، فاتبع هذه الخطوات لتثبيت NGINX Open Source أو NGINX Plus. بمجرد التثبيت، تأكد من تشغيل مثيل NGINX وقدرته على الاستجابة لطلبات HTTP.
قم بإصدار الأمر التالي لبدء تشغيل NGINX:
سودو نجينكس
حليقة -I 127.0.0.1
يجب أن تشاهد الرد التالي:
HTTP/1.1200 موافق الخادم: nginx/1.25.5
بمجرد التثبيت، يجب تضمين وحدة (وحدات) NJS (أو كليهما) في ملف تكوين NGINX. في معظم الأنظمة، يوجد ملف تكوين NGINX في /etc/nginx/nginx.conf
افتراضيًا.
Sudo vi /etc/nginx/nginx.conf
استخدم توجيه Load_module في سياق المستوى الأعلى ("الرئيسي") لتمكين أي من الوحدة (الوحدات) (أو كليهما).
وحدات تحميل_module/ngx_http_js_module.so;وحدات تحميل_module/ngx_stream_js_module.so;
عادةً ما تتم تسمية ملفات البرامج النصية لـ NJS بامتداد .js ويتم وضعها في الدليل /etc/nginx/njs/
. وتتكون عادةً من وظائف يتم تصديرها بعد ذلك، مما يجعلها متاحة في ملفات تكوين NGINX.
توفر NJS مجموعة من الكائنات ذات الأساليب والخصائص المرتبطة بها والتي لا تشكل جزءًا من تعريفات ECMAScript. راجع المرجع الكامل لهذه الكائنات وكيف يمكن استخدامها لتوسيع وتخصيص NGINX.
فيما يلي مثال أساسي لـ "Hello World".
تقوم وظيفة hello
في هذا الملف بإرجاع رمز استجابة حالة HTTP 200 OK مع السلسلة "Hello World!"، متبوعة بخلاصة سطر. يتم بعد ذلك تصدير الوظيفة لاستخدامها في ملف تكوين NGINX.
أضف هذا الملف إلى الدليل /etc/nginx/njs
:
وظيفة مرحبا (ص) { r.return(200, "Hello World!n");}تصدير افتراضي {hello}
نقوم بتعديل تكوين NGINX الخاص بنا ( /etc/nginx/nginx.conf
) لاستيراد ملف JavaScript وتنفيذ الوظيفة في ظل ظروف محددة.
# قم بتحميل ngx_http_js_module Moduleload_module Modules/ngx_http_js_module.so;events {}http { # قم بتعيين المسار إلى ملفات JavaScript الخاصة بـ njs js_path "/etc/nginx/njs/"; # قم باستيراد ملف JavaScript الخاص بنا إلى المتغير "main" js_import الرئيسي من http/hello.js؛ server {listen 80;location / { # تنفيذ وظيفة "الترحيب" المحددة في ملف JavaScript الخاص بنا على جميع طلبات HTTP # والرد بمحتويات وظيفتنا. js_content main.hello; } } }
للحصول على قائمة كاملة بتوجيهات njs، راجع صفحات وثائق الوحدة ngx_http_js_module وngx_stream_js_module.
نصيحة
يمكن العثور على نسخة أكثر تفصيلاً من هذا وأمثلة أخرى في مستودع أمثلة njs الرسمي.
يتم تثبيت NGINX JavaScript باستخدام أداة مساعدة لواجهة سطر الأوامر. يمكن فتح الواجهة كواجهة تفاعلية أو استخدامها لمعالجة بناء جملة JavaScript من ملفات محددة مسبقًا أو إدخال قياسي. نظرًا لأن الأداة المساعدة تعمل بشكل مستقل، فإن الكائنات الخاصة بـ NGINX مثل HTTP وStream غير متوفرة خلال وقت تشغيلها.
$ إن جي إس >> جلوبال ثيسجلوبال { إن جي إس: إن جي إس {الإصدار: '0.8.4' }, عالمي: [تعميم]، العملية: العملية {argv: ['/usr/bin/njs'],env: { PATH: '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin: /bin'، اسم المضيف: 'f777c149d4f8'، المصطلح: 'xterm'، NGINX_VERSION: '1.25.5'، NJS_VERSION: '0.8.4'، PKG_RELEASE: '1~buster'، HOME: '/root'} }, وحدة التحكم: {سجل: [الوظيفة: أصلية]، تفريغ: [الوظيفة: أصلية]، الوقت: [الوظيفة: أصلية]، نهاية الوقت: [الوظيفة: أصلية] }, طباعة: [الوظيفة: أصلية]}>>
صدى $ "2**3" | إن جي إس -س 8
يمكن استخدام الخطوات التالية لإنشاء NGINX JavaScript كوحدة نمطية ديناميكية ليتم دمجها في NGINX أو كوحدة ثنائية مستقلة لاستخدامها كأداة مساعدة لواجهة سطر الأوامر.
مهم
لإنشاء وحدة للاستخدام مع NGINX، ستحتاج أيضًا إلى استنساخ NGINX وتكوينه وإنشائه باتباع الخطوات الموضحة في هذا المستند.
ستتطلب معظم توزيعات Linux تثبيت العديد من التبعيات من أجل إنشاء NGINX وNGINX JavaScript. التعليمات التالية خاصة بمدير الحزم apt
، وهو متاح على نطاق واسع في معظم توزيعات Ubuntu/Debian ومشتقاتها.
Sudo apt install gcc make
Sudo apt install libpcre3-dev zlib1g-dev libssl-dev libxml2-dev libxslt-dev
للبناء باستخدام QuickJS، ستحتاج أيضًا إلى إنشاء مكتبة QuickJS:
استنساخ بوابة https://github.com/bellard/quickjscd Quickjs CFLAGS='-fPIC' قم بإنشاء libquickjs.a
تحذير
هذا هو الحد الأدنى من مكتبات التبعية اللازمة لبناء NGINX وNJS. قد تكون هناك حاجة إلى تبعيات أخرى إذا اخترت إنشاء NGINX بوحدات إضافية. راقب مخرجات أمر configure
الذي تمت مناقشته في الأقسام التالية للحصول على معلومات حول الوحدات النمطية التي قد تكون مفقودة.
باستخدام طريقتك المفضلة، انسخ مستودع NGINX JavaScript في دليل التطوير الخاص بك. راجع استنساخ مستودع GitHub للحصول على مساعدة إضافية.
https://github.com/nginx/njs.git
الخطوات التالية اختيارية ولا تحتاج إليها إلا إذا اخترت إنشاء NJS كأداة مساعدة مستقلة.
لاستخدام الصدفة التفاعلية لـ NJS، ستحتاج إلى تثبيت مكتبة libedit-dev
Sudo apt install libedit-dev
قم بتشغيل الأوامر التالية من الدليل الجذر لمستودعك المستنسخ:
./تكوين
بناء جافا سكريبت NGINX:
يصنع
يجب أن تكون الأداة متاحة الآن على <NJS_SRC_ROOT_DIR>/build/njs
. راجع واجهة سطر أوامر NJS (CLI) للحصول على معلومات حول الاستخدام.
انسخ مستودع كود مصدر NGINX في دليل خارج مستودع مصدر NJS المستنسخ مسبقًا.
https://github.com/nginx/nginx.git
لإنشاء NGINX JavaScript كوحدة ديناميكية، قم بتنفيذ الأوامر التالية من الدليل الجذر لمستودع كود مصدر NGINX:
تلقائي/تكوين --add-dynamic-module=<NJS_SRC_ROOT_DIR>/nginx
للإنشاء بدعم QuickJS، قم بتوفير مسار التضمين والمكتبة باستخدام خيارات --with-cc-opt=
و --with-ld-opt=
:
تلقائي/تكوين --add-dynamic-module=<NJS_SRC_ROOT_DIR>/nginx --with-cc-opt="-I<QUICKJS_SRC_ROOT_DIR>" --with-ld-opt="-L<QUICKJS_SRC_ROOT_DIR>"
تحذير
افتراضيًا، ستقوم هذه الطريقة ببناء وحدة ngx_http_js_module
فقط. لاستخدام NJS مع وحدة NGINX Stream، ستحتاج إلى تمكينه أثناء خطوة configure
بحيث يتم إنشاؤه باستخدام ثنائي NGINX. سيؤدي القيام بذلك إلى تجميع وحدة ngx_stream_js_module
تلقائيًا عند إضافة NJS إلى الإصدار. تتمثل إحدى طرق تحقيق ذلك في تغيير خطوة configure
إلى:
تلقائي/تكوين --with-stream --add-dynamic-module=<NJS_SRC_ROOT_DIR>/nginx
ترجمة الوحدة
يصنع
نصيحة
لإنشاء NGINX مع تضمين NGINX JavaScript في ملف ثنائي واحد، قم بتغيير خطوة configure
إلى ما يلي:
تلقائي/تكوين --add-module=<NJS_SRC_ROOT_DIR>/nginx
إذا تم إنشاؤها كوحدة (وحدات) ديناميكية، فستكون وحدة (وحدات) NGINX JavaScript متاحة في الدليل <NGINX_SRC_ROOT_DIR>/objs/
. يمكن بعد ذلك نسخ الوحدة (الوحدات) إلى تثبيت NGINX موجود وتمكينها. راجع تمكين وحدات JavaScript NGINX للحصول على التفاصيل.
وبدلاً من ذلك، يمكنك اختيار تثبيت ثنائيات NGINX وNGINX JavaScript المضمنة عن طريق إصدار الأمر التالي:
مهم
إذا تم دمجها في ثنائي NGINX كوحدة نمطية قياسية (غير ديناميكية)، فستكون هذه هي أسهل طريقة للتثبيت
قم بالتثبيت
افتراضيًا، سيتم تثبيت ثنائي NGINX في /usr/local/nginx/sbin/nginx
. سيتم نسخ وحدة (وحدات) NGINX JavaScript إلى /usr/local/nginx/modules/
.
المواصفات الفنية لـ NJS مماثلة لتلك الخاصة بـ NGINX.
راجع أنظمة التشغيل والمنصات التي تم اختبارها للحصول على قائمة كاملة بالتوزيعات المدعومة.
حاوية
السحابة العامة (AWS، وGoogle Cloud Platform، وMicrosoft Azure)
آلة افتراضية
يتم دعم NGINX JavaScript في جميع إصدارات NGINX Open Source بدءًا من nginx-1.14 وجميع إصدارات NGINX Plus بدءًا من NGINX Plus R15.
نحن نشجعك على التعامل معنا. يرجى الاطلاع على دليل المساهمة للحصول على معلومات حول كيفية طرح الأسئلة والإبلاغ عن المشكلات والمساهمة في التعليمات البرمجية.
راجع صفحة الإصدار الخاصة بنا لتتبع التحديثات.
2-شرط يشبه الترخيص BSD
الوثائق الإضافية متاحة على: https://nginx.org/en/docs/njs/
©2024 F5, Inc. جميع الحقوق محفوظة. https://www.f5.com/products/nginx