عندما يتعلق الأمر بتوسيع نطاق تطبيقات Node.js وتحسينها، يلعب NGINX دورًا حيويًا في التعامل مع حركة المرور العالية، وخدمة الملفات الثابتة بكفاءة، والعمل كموازن التحميل. يمكن لـ NGINX، وهو خادم ويب عالي الأداء، أن يعمل أيضًا كوكيل عكسي، مما يسمح له بتوزيع الطلبات عبر خوادم متعددة. في هذه المقالة، سنغطي ماهية NGINX، ولماذا يجب عليك استخدامه مع Node.js، وكيفية تكوين NGINX لمختلف المهام، بما في ذلك الوكيل العكسي، وموازنة التحميل، وخدمة المحتوى الثابت.
NGINX (يُنطق "Engine X") هو خادم ويب قوي ووكيل عكسي مصمم للتعامل مع عدد كبير من الاتصالات المتزامنة بأداء عالٍ. تم إنشاء NGINX في البداية كخادم ويب، وقد أدى تعدد استخدامات NGINX إلى توسيع نطاقه ليشمل موازنة التحميل والوكيل العكسي وخدمة الملفات الثابتة.
لماذا نستخدم NGINX مع Node.js؟
لتكوين NGINX لـ Node.js، اتبع الخطوات التالية:
أولاً، تحتاج إلى تثبيت 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 افتراضية.
لتمكين NGINX كوكيل عكسي، مما يسمح له بإعادة توجيه طلبات العميل إلى تطبيق Node.js، نحتاج إلى تكوين NGINX وفقًا لذلك.
إليك مثال لتكوين NGINX لتطبيق Node.js الذي يعمل على المضيف المحلي:3000.
cd /etc/nginx/sites-available/
sudo nano nodeapp.conf
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; } }
sudo ln -s /etc/nginx/sites-available/nodeapp.conf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
سيعمل هذا الإعداد على توجيه كل حركة المرور الواردة على المنفذ 80 إلى تطبيق Node.js الذي يعمل على المنفذ 3000.
عندما ينمو تطبيق Node.js الخاص بك، قد لا يكون مثيل واحد كافيًا للتعامل مع حركة المرور. يمكن تكوين NGINX كموازن تحميل، لتوزيع حركة المرور عبر مثيلات Node.js المتعددة.
إليك كيفية تكوين NGINX لموازنة التحميل:
sudo nano /etc/nginx/sites-available/nodeapp.conf
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; } }
sudo nginx -t sudo systemctl restart nginx
توضيح:
يقوم هذا الإعداد بتوزيع الحمل بالتساوي عبر مثيلات Node.js المتعددة، مما يحسن قابلية التوسع والتسامح مع الأخطاء.
يمكن أن يؤدي عرض الملفات الثابتة مثل الصور وCSS وJavaScript إلى إرهاق تطبيق Node.js الخاص بك. يمكن لـ NGINX التخلص من هذه المسؤولية، وتحسين الأداء من خلال خدمة الأصول الثابتة بشكل مباشر.
sudo mkdir -p /var/www/html/static
انقل ملفاتك الثابتة (CSS، الصور، JS) إلى هذا الدليل.
قم بتحديث تكوين 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; } }
sudo nginx -t sudo systemctl restart nginx
توضيح:
يعد الاتصال الآمن بين العملاء والخوادم أمرًا بالغ الأهمية، وتوفر SSL (طبقة المقابس الآمنة) هذا التشفير. يمكن لـ NGINX التعامل مع إنهاء SSL، مما يعني أنه يتعامل مع تشفير وفك تشفير طلبات HTTPS قبل تمريرها إلى تطبيق Node.js.
إليك كيفية تكوين SSL مع NGINX:
الحصول على شهادة SSL. يمكنك الحصول على شهادة SSL مجانية من Let’s Encrypt أو استخدام أي مرجع مصدق آخر.
تعديل تكوين 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; }
sudo nginx -t sudo systemctl restart nginx
توضيح:
تعد NGINX أداة قوية لتحسين الأداء وقابلية التوسع والأمان لتطبيقات Node.js الخاصة بك. بدءًا من موازنة التحميل وحتى خدمة الملفات الثابتة والتعامل مع إنهاء SSL، يقوم NGINX بإلغاء تحميل العديد من المهام من Node.js، مما يسمح لتطبيقك بالتركيز على ما يفعله بشكل أفضل: التعامل مع منطق الأعمال. باستخدام التكوينات المتوفرة في هذه المقالة، يمكنك إعداد NGINX لتحسين كفاءة وموثوقية تطبيق Node.js الخاص بك.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3