"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > NGINX لتطبيقات Node.js: ماذا ولماذا وكيفية استخدامه

NGINX لتطبيقات Node.js: ماذا ولماذا وكيفية استخدامه

تم النشر بتاريخ 2024-11-04
تصفح:224

NGINX for Node.js Applications: What, Why, and How to Use It

عندما يتعلق الأمر بتوسيع نطاق تطبيقات Node.js وتحسينها، يلعب NGINX دورًا حيويًا في التعامل مع حركة المرور العالية، وخدمة الملفات الثابتة بكفاءة، والعمل كموازن التحميل. يمكن لـ NGINX، وهو خادم ويب عالي الأداء، أن يعمل أيضًا كوكيل عكسي، مما يسمح له بتوزيع الطلبات عبر خوادم متعددة. في هذه المقالة، سنغطي ماهية NGINX، ولماذا يجب عليك استخدامه مع Node.js، وكيفية تكوين NGINX لمختلف المهام، بما في ذلك الوكيل العكسي، وموازنة التحميل، وخدمة المحتوى الثابت.

ما هو نجينكس؟

NGINX (يُنطق "Engine X") هو خادم ويب قوي ووكيل عكسي مصمم للتعامل مع عدد كبير من الاتصالات المتزامنة بأداء عالٍ. تم إنشاء NGINX في البداية كخادم ويب، وقد أدى تعدد استخدامات NGINX إلى توسيع نطاقه ليشمل موازنة التحميل والوكيل العكسي وخدمة الملفات الثابتة.

لماذا نستخدم NGINX مع Node.js؟

  • موازنة التحميل الفعالة: يمكن لـ NGINX توزيع حركة المرور عبر مثيلات Node.js المتعددة، مما يعزز قابلية التوسع.
  • الوكيل العكسي: يعمل كخادم وسيط بين العملاء وخوادم Node.js الخلفية، مما يساعد على إخفاء بنية التطبيق وطلبات التوازن.
  • التعامل مع المحتوى الثابت: يمكن أن يخدم NGINX الملفات الثابتة مثل الصور وCSS وJavaScript، مما يحرر Node.js من هذه المهمة ويحسن الأداء.
  • إنهاء SSL: يمكن لـ NGINX التعامل مع تشفير SSL (TLS)، مما يخفف العبء عن Node.js ويحسن الأمان.

إعداد NGINX باستخدام Node.js

لتكوين NGINX لـ Node.js، اتبع الخطوات التالية:

الخطوة 1: تثبيت NGINX

أولاً، تحتاج إلى تثبيت NGINX على الخادم الخاص بك. استخدم الأوامر التالية بناءً على نظام التشغيل الخاص بك:

لنظام Ubuntu/Debian:

sudo apt update
sudo apt install nginx

بالنسبة إلى CentOS/RHEL :

sudo yum install nginx

بعد التثبيت، يمكنك تشغيل NGINX بالأمر التالي:

sudo systemctl start nginx

يمكنك التحقق من تشغيل NGINX من خلال زيارة عنوان IP الخاص بخادمك في المتصفح. إذا كان NGINX يعمل، فسترى صفحة ترحيب NGINX افتراضية.

الخطوة 2: قم بتكوين NGINX كوكيل عكسي لـ Node.js

لتمكين NGINX كوكيل عكسي، مما يسمح له بإعادة توجيه طلبات العميل إلى تطبيق Node.js، نحتاج إلى تكوين NGINX وفقًا لذلك.

إليك مثال لتكوين NGINX لتطبيق Node.js الذي يعمل على المضيف المحلي:3000.

  1. انتقل إلى دليل تكوين NGINX:
   cd /etc/nginx/sites-available/
  1. قم بإنشاء ملف تكوين NGINX جديد لتطبيق Node.js الخاص بك:
   sudo nano nodeapp.conf
  1. أضف التكوين التالي:
server {
    listen 80;
    server_name your_domain_or_IP;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  1. تمكين التكوين عن طريق إنشاء رابط رمزي للدليل الممكّن للمواقع:
   sudo ln -s /etc/nginx/sites-available/nodeapp.conf /etc/nginx/sites-enabled/
  1. اختبر تكوين NGINX بحثًا عن الأخطاء النحوية:
   sudo nginx -t
  1. إذا كان كل شيء على ما يرام، أعد تشغيل NGINX:
   sudo systemctl restart nginx

سيعمل هذا الإعداد على توجيه كل حركة المرور الواردة على المنفذ 80 إلى تطبيق Node.js الذي يعمل على المنفذ 3000.

NGINX كموازن تحميل لـ Node.js

عندما ينمو تطبيق Node.js الخاص بك، قد لا يكون مثيل واحد كافيًا للتعامل مع حركة المرور. يمكن تكوين NGINX كموازن تحميل، لتوزيع حركة المرور عبر مثيلات Node.js المتعددة.

إليك كيفية تكوين NGINX لموازنة التحميل:

  1. قم بإنشاء أو تحرير ملف تكوين NGINX الخاص بك (nodeapp.conf):
   sudo nano /etc/nginx/sites-available/nodeapp.conf
  1. أضف التكوين التالي لتمكين موازنة التحميل:
upstream node_backend {
    server localhost:3000;
    server localhost:3001;
    server localhost:3002;
}

server {
    listen 80;
    server_name your_domain_or_IP;

    location / {
        proxy_pass http://node_backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  1. احفظ الملف، واختبر التكوين، وأعد تشغيل NGINX:
sudo nginx -t
sudo systemctl restart nginx

توضيح:

  • تحدد الكتلة الأولية العديد من خوادم Node.js (المضيف المحلي: 3000، والمضيف المحلي: 3001، والمضيف المحلي: 3002)، وسوف يقوم NGINX بموازنة حركة المرور الواردة عبر هذه الخوادم.
  • يستخدم NGINX خوارزمية دائرية بشكل افتراضي، حيث يرسل الطلبات إلى كل خادم بدوره.

يقوم هذا الإعداد بتوزيع الحمل بالتساوي عبر مثيلات Node.js المتعددة، مما يحسن قابلية التوسع والتسامح مع الأخطاء.

تقديم المحتوى الثابت باستخدام NGINX

يمكن أن يؤدي عرض الملفات الثابتة مثل الصور وCSS وJavaScript إلى إرهاق تطبيق Node.js الخاص بك. يمكن لـ NGINX التخلص من هذه المسؤولية، وتحسين الأداء من خلال خدمة الأصول الثابتة بشكل مباشر.

  1. قم بإنشاء دليل لملفاتك الثابتة (على سبيل المثال، /var/www/html/static/):
   sudo mkdir -p /var/www/html/static
  1. انقل ملفاتك الثابتة (CSS، الصور، JS) إلى هذا الدليل.

  2. قم بتحديث تكوين NGINX الخاص بك (nodeapp.conf) لخدمة الملفات الثابتة:

server {
    listen 80;
    server_name your_domain_or_IP;

    location /static/ {
        root /var/www/html;
    }

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}
  1. اختبر التكوين وأعد تشغيل NGINX:
sudo nginx -t
sudo systemctl restart nginx

توضيح:

  • سيتم تقديم طلبات الملفات الثابتة (على سبيل المثال، your_domain_or_IP/static/style.css) مباشرةً بواسطة NGINX من الدليل /var/www/html/static/، مما يقلل الحمل على خادم Node.js الخاص بك.

إنهاء SSL مع NGINX

يعد الاتصال الآمن بين العملاء والخوادم أمرًا بالغ الأهمية، وتوفر SSL (طبقة المقابس الآمنة) هذا التشفير. يمكن لـ NGINX التعامل مع إنهاء SSL، مما يعني أنه يتعامل مع تشفير وفك تشفير طلبات HTTPS قبل تمريرها إلى تطبيق Node.js.

إليك كيفية تكوين SSL مع NGINX:

  1. الحصول على شهادة SSL. يمكنك الحصول على شهادة SSL مجانية من Let’s Encrypt أو استخدام أي مرجع مصدق آخر.

  2. تعديل تكوين NGINX الخاص بك لتمكين SSL:

server {
    listen 443 ssl;
    server_name your_domain_or_IP;

    ssl_certificate /etc/ssl/certs/your_domain.crt;
    ssl_certificate_key /etc/ssl/private/your_domain.key;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

server {
    listen 80;
    server_name your_domain_or_IP;

    # Redirect all HTTP requests to HTTPS
    return 301 https://$host$request_uri;
}
  1. اختبار وإعادة تشغيل NGINX:
sudo nginx -t
sudo systemctl restart nginx

توضيح:

  • يضمن توجيه الاستماع 443 ssl أن يستمع NGINX لحركة مرور HTTPS.
  • تحدد ssl_certificate وssl_certificate_key المسارات إلى شهادة SSL والمفتاح الخاص.
  • تضمن إعادة التوجيه من HTTP إلى HTTPS أن كل حركة المرور تستخدم SSL.

خاتمة

تعد NGINX أداة قوية لتحسين الأداء وقابلية التوسع والأمان لتطبيقات Node.js الخاصة بك. بدءًا من موازنة التحميل وحتى خدمة الملفات الثابتة والتعامل مع إنهاء SSL، يقوم NGINX بإلغاء تحميل العديد من المهام من Node.js، مما يسمح لتطبيقك بالتركيز على ما يفعله بشكل أفضل: التعامل مع منطق الأعمال. باستخدام التكوينات المتوفرة في هذه المقالة، يمكنك إعداد NGINX لتحسين كفاءة وموثوقية تطبيق Node.js الخاص بك.

بيان الافراج تم إعادة نشر هذه المقالة على: https://dev.to/imsushant12/nginx-for-nodejs-applications-what-why-and-how-to-use-it-1gbn?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ Study_golang @163.com حذف
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3