ديف أوبس

Nginx: تثبيت، إعداد، وتحسين أداء الويب

مقدمة

يُعتبر Nginx من بين أكثر خوادم الويب استخدامًا في العالم، وذلك بفضل كفاءته العالية في معالجة الطلبات، وسرعته الكبيرة في تقديم المحتوى، وقابليته للتوسع. تم تطوير Nginx لأول مرة في عام 2004 كبديل لخوادم Apache التقليدية، وقد تم تصميمه في البداية للتعامل مع عدد كبير من الطلبات في وقت واحد بطريقة أكثر كفاءة، وهو ما يجعله خيارًا شائعًا للمواقع التي تتطلب أداء عاليًا.

يهدف هذا المقال إلى تقديم شرح تفصيلي حول تثبيت Nginx، إعداداته الأولية، وكيفية تحسين أدائه لتلبية احتياجات مواقع الويب الكبيرة والمتنامية.

الفصل الأول: مقدمة حول Nginx

ما هو Nginx؟

Nginx هو خادم ويب مفتوح المصدر، يتميز بسرعته العالية وقدرته على معالجة عدد كبير من الاتصالات في وقت واحد. إلى جانب كونه خادم ويب، يمكن استخدام Nginx كـ خادم وكيل عكسي (Reverse Proxy) وموازن تحميل (Load Balancer).

Nginx يعتمد على بنية غير متزامنة وموجهة للأحداث، مما يسمح له بالتعامل مع الآلاف من الاتصالات المفتوحة في وقت واحد دون الحاجة إلى إنشاء عمليات منفصلة لكل طلب كما هو الحال في خوادم الويب التقليدية مثل Apache.

مميزات Nginx

  1. أداء عالي: يتميز Nginx بسرعته في معالجة الطلبات وكفاءته العالية في استخدام الموارد.
  2. موازنة الحمل: يدعم Nginx توزيع الحمل عبر عدة خوادم لتحسين الأداء وتوزيع الطلبات.
  3. وكيل عكسي: يعمل Nginx كوكيل بين العميل والخادم الرئيسي لتحسين الأمان والأداء.
  4. التوافق مع البروتوكولات الحديثة: يدعم Nginx HTTP/2، مما يسهم في تحسين سرعة تحميل الصفحات.

استخدامات Nginx

  • خادم ويب: يقدم المحتوى الثابت والملفات الديناميكية.
  • وكيل عكسي: يعيد توجيه الطلبات بين العملاء والخوادم الداخلية.
  • موازن تحميل: يوزع الطلبات عبر عدة خوادم لتجنب تحميل زائد على خادم واحد.
  • وكيل بريد إلكتروني: يمكن استخدامه كوكيل لخوادم البريد الإلكتروني مثل IMAP وPOP3.

الفصل الثاني: تثبيت Nginx

تثبيت Nginx على نظام Linux

تثبيت Nginx يعتمد على نظام التشغيل الذي تستخدمه. هنا سنغطي كيفية تثبيته على أشهر توزيعات Linux مثل Ubuntu وCentOS.

الخطوة 1: تحديث النظام

قبل تثبيت أي برنامج، يجب التأكد من تحديث النظام لضمان الحصول على أحدث الحزم.

bash
sudo apt update && sudo apt upgrade # على Ubuntu sudo yum update # على CentOS

الخطوة 2: تثبيت Nginx

على Ubuntu

sudo apt install nginx

على CentOS

sudo yum install nginx

الخطوة 3: تشغيل Nginx

بعد التثبيت، يمكن بدء تشغيل Nginx باستخدام الأوامر التالية:

bash
sudo systemctl start nginx sudo systemctl enable nginx # لتشغيله تلقائيًا عند بدء النظام

الخطوة 4: التحقق من تثبيت Nginx

بعد تشغيل Nginx، يمكنك التأكد من أنه يعمل بشكل صحيح عن طريق فتح المتصفح وإدخال عنوان IP الخاص بالخادم. يجب أن ترى صفحة الترحيب الافتراضية لـ Nginx.

الخطوة 5: إعداد جدار الحماية

إذا كنت تستخدم UFW (Uncomplicated Firewall) على Ubuntu، تأكد من السماح بحركة المرور على المنافذ المطلوبة:

arduino
sudo ufw allow 'Nginx Full'

الفصل الثالث: إعداد Nginx

تعديل ملف الإعدادات الأساسي

ملف إعدادات Nginx الرئيسي يوجد عادة في:

bash
/etc/nginx/nginx.conf

من المهم تعديل هذا الملف بعناية لضبط Nginx ليتناسب مع احتياجاتك.

الإعدادات الأساسية

  1. worker_processes: هذا الخيار يحدد عدد عمليات Nginx العاملة. القاعدة العامة هي تخصيص عملية لكل نواة CPU.

    arduino
    worker_processes auto;
  2. worker_connections: يحدد عدد الاتصالات التي يمكن لكل عملية التعامل معها في وقت واحد.

    yaml
    worker_connections 1024;
  3. keepalive_timeout: يحدد مدة الحفاظ على الاتصال المفتوح مع العميل.

    keepalive_timeout 65;

إعداد استضافة مواقع متعددة

إذا كنت تخطط لاستضافة عدة مواقع على نفس الخادم، يمكن إعداد Virtual Hosts. الملفات الخاصة بكل موقع يمكن إضافتها في المجلد:

arduino
/etc/nginx/sites-available/

قم بإنشاء ملف جديد لكل موقع يحتوي على إعدادات الموقع:

perl
server { listen 80; server_name example.com www.example.com; root /var/www/example.com; index index.html index.htm; location / { try_files $uri $uri/ =404; } }

بعد إنشاء الملف، يجب تفعيله عبر إنشاء رابط رمزي في مجلد sites-enabled:

bash
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

ثم إعادة تشغيل Nginx لتفعيل الإعدادات الجديدة:

sudo systemctl reload nginx

الفصل الرابع: تحسين أداء Nginx

1. تفعيل التخزين المؤقت (Caching)

واحدة من أفضل الطرق لتحسين أداء Nginx هي استخدام التخزين المؤقت. يمكن تمكين التخزين المؤقت في Nginx عبر إعدادات التخزين المؤقت للملفات الثابتة:

mathematica
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; add_header Cache-Control "public"; }

2. تمكين ضغط Gzip

يعمل ضغط Gzip على تقليل حجم الملفات المرسلة بين الخادم والمتصفح، مما يحسن سرعة التحميل. لتفعيل ضغط Gzip، أضف الإعدادات التالية إلى ملف nginx.conf:

bash
gzip on; gzip_types text/plain application/xml application/json text/css application/javascript;

3. ضبط Keep-Alive

تفعيل Keep-Alive يزيد من سرعة الاتصال عن طريق الحفاظ على الاتصالات المفتوحة مع العميل لفترة أطول، مما يقلل من زمن الاستجابة عند تحميل موارد متعددة.

keepalive_timeout 65; keepalive_requests 100;

4. توزيع الحمل باستخدام Nginx

إذا كنت تدير عدة خوادم وتريد توزيع الحمل بينها، يمكنك إعداد Nginx كموازن تحميل:

markdown
upstream backend { server backend1.example.com; server backend2.example.com; } server { location / { proxy_pass http://backend; } }

5. استخدام HTTP/2

HTTP/2 هو إصدار جديد من بروتوكول HTTP يساعد في تسريع تحميل الصفحات. لتفعيله على Nginx، يجب التأكد من تثبيت شهادة SSL ومن ثم تعديل ملف الإعدادات كما يلي:

vbnet
listen 443 ssl http2; ssl_certificate /path/to/cert.crt; ssl_certificate_key /path/to/cert.key;

الفصل الخامس: أمان Nginx

1. تفعيل جدران الحماية

من الضروري تفعيل جدار حماية على الخادم لمنع الهجمات. استخدام UFW أو iptables مع ضبط المنافذ المناسبة لحركة المرور الخاصة بـ Nginx يحمي الخادم من الهجمات الشائعة.

2. استخدام SSL/TLS

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

css
sudo apt install certbot python3-certbot-nginx sudo certbot --nginx -d example.com -d www.example.com

3. تفعيل الحماية ضد الهجمات الشائعة

يمكن استخدام وحدات خارجية مثل ModSecurity أو Fail2Ban لحماية Nginx من هجمات DDoS وBrute Force.

الفصل السادس: مراقبة Nginx وتحسين الأداء

1. مراقبة الأداء باستخدام أدوات مثل Netdata أو Prometheus

يمكن تثبيت أدوات مراقبة لمتابعة أداء الخادم والاتصالات النشطة.

2. مراقبة الأخطاء من خلال ملفات السجلات

توجد ملفات السجلات في /var/log/nginx/، ومن المهم مراجعة هذه الملفات بانتظام لمتابعة الأخطاء والتأكد من عدم وجود مشاكل في الإعدادات أو الهجمات.

الخاتمة

Nginx هو أحد الحلول الأكثر كفاءة وقوة في تشغيل المواقع على الإنترنت. من خلال التثبيت والإعداد الصحيح، يمكنه تقديم أداء عالٍ وسرعة في معالجة الطلبات. إذا تم تحسين Nginx بالشكل المناسب، يمكن أن يكون وسيلة فعالة لتلبية احتياجات المواقع الضخمة والتعامل مع كميات هائلة من الزيارات.

يجب على المستخدمين الذين يديرون مواقع كبيرة الاستفادة من أدوات تحسين الأداء مثل التخزين المؤقت وضغط Gzip، بالإضافة إلى تأمين الخادم باستخدام SSL وتفعيل جدران الحماية لمنع الهجمات.

المزيد من المعلومات

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

أولًا وقبل كل شيء، يجب تنصيب Nginx على الخادوم الخاص بك. يعتمد الطريقة التي ستتبعها على نظام التشغيل الذي تستخدمه، ولكن في الغالب، يمكنك استخدام أداة إدارة الحزم الخاصة بالنظام، مثل apt على Ubuntu أو yum على CentOS. على سبيل المثال، يمكنك استخدام الأمر التالي لتثبيت Nginx على أنظمة Ubuntu:

bash
sudo apt update sudo apt install nginx

بعد التثبيت، يمكنك بدء خدمة Nginx باستخدام الأمر:

bash
sudo systemctl start nginx

ثم، للتحقق من أن Nginx يعمل بشكل صحيح، يمكنك زيارة عنوان IP الخاص بالخادوم في متصفح الويب. يجب أن تظهر صفحة ترحيب Nginx.

بمجرد أن يكون Nginx تحت التشغيل، يمكنك بدء إعداده لتلبية احتياجاتك الخاصة. يتم تكوين Nginx عبر ملفات إعداد تتضمن تعليمات حول كيفية التعامل مع الطلبات الواردة. يتوفر ملف إعداد رئيسي لـ Nginx في مسار مثل “/etc/nginx/nginx.conf”.

من خلال هذه الملفات، يمكنك تحديد الخصائص الرئيسية للخادوم، مثل المواقع التي يخدمها وكيف يتم التعامل مع الطلبات والإعدادات الأمانية. يمكنك أيضًا إنشاء ملفات إعداد إضافية لكل موقع يستضيفه الخادوم.

على سبيل المثال، يمكنك إنشاء ملف إعداد لموقع ويب على Nginx في “/etc/nginx/sites-available/example.com” وتعيينه برابط رمزي إلى مجلد “sites-enabled” باستخدام الأمر:

bash
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/

ثم، قم بإعادة تحميل Nginx لتحديث الإعدادات:

bash
sudo systemctl reload nginx

بهذا، يمكنك تكوين Nginx ليخدم موقع ويب محدد. تأكد من تخصيص إعدادات الأمان والأداء وفقًا لمتطلبات مشروعك الخاص.

في الختام، يمكن القول إن Nginx يعد خيارًا فعّالًا لخوادم الويب بفضل أدائه الرائع وقدرته على التعامل مع حمولات عالية. من خلال تنصيبه وتكوينه بشكل صحيح، يمكنك الاستفادة القصوى من إمكانياته وتوفير تجربة موقع ويب سلسة وفعّالة.

بالطبع، دعونا نعزز فهمنا لـ Nginx بمزيد من التفاصيل حول بعض المفاهيم والميزات الرئيسية التي تميز هذا الخادوم الويب الممتاز.

1. توجيه الحركة (Load Balancing):

يُعد Nginx خيارًا ممتازًا لتوجيه حركة المرور (Load Balancing) بين خوادم متعددة. يمكنه تحسين استجابة الموقع وتوفير توازن في توزيع الحمولة عبر خوادم متعددة، مما يزيد من استقرار وكفاءة الموقع.

2. تحسين الأداء:

يعتبر Nginx فعّالًا في التعامل مع الكثير من الاتصالات المتزامنة بفضل نموذجه الغير تزامني (asynchronous)، مما يجعله مثاليًا لتطبيقات الويب ذات الحمولة العالية والاستجابة السريعة.

3. SSL/TLS Termination:

يُعتبر Nginx ممتازًا في توفير خدمات SSL/TLS Termination، حيث يستطيع تفريغ (terminate) التشفير وفك تشفير حركة المرور، مما يخفف من عبء الخوادم الخلفية ويحسن أداء الموقع.

4. Reverse Proxy:

يمكن أن يعمل Nginx كـ Reverse Proxy، حيث يستقبل الطلبات من العملاء ويوجهها إلى خوادم ويب خلفية، ويعيد الردود إلى العميل. هذا يعزز الأمان ويتيح لك فصل الخوادم الخلفية عن العملاء.

5. تكوين متقدم:

يتيح Nginx تكوينًا متقدمًا ومرونة عالية في ملفات الإعداد، مما يسمح للمطورين بتحديد تفاصيل دقيقة حول كيفية معالجة الطلبات وتكوين الأمان والأداء.

6. حماية من هجمات الحواجز النارية (Firewall):

يتمتع Nginx بقدرة على حماية المواقع من هجمات الحواجز النارية مثل DDoS (الخدمة الموجهة)، ويمكن تكوينه للتعامل مع هذه الهجمات بكفاءة.

7. إدارة الصور والملفات الثابتة:

يمكن استخدام Nginx لخدمة الملفات الثابتة بشكل فعّال، مما يخفف من الضغط على خوادم الويب الديناميكية ويحسن أداء تحميل المواقع.

8. دعم بروتوكول HTTP/2:

يوفر Nginx دعمًا لبروتوكول HTTP/2 الذي يعزز سرعة تحميل الصفحات ويحسن تجربة المستخدم.

الاستنتاج:

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

الكلمات المفتاحية

في هذا المقال، استعملنا العديد من الكلمات الرئيسية التي تتعلق بتثبيت واعداد واستخدام خادم الويب Nginx. سأقدم لك الكلمات الرئيسية وشرح مختصر لكل منها:

  1. Nginx:

    • الشرح: خادوم ويب مفتوح المصدر يعتبر بديلاً فعّالًا لخوادم الويب التقليدية، مصمم لتوفير أداء عالي وفعّالية في استهلاك الموارد.
  2. تنصيب:

    • الشرح: عملية تثبيت البرنامج أو الخدمة على النظام، وفي سياق المقال، يتعلق بتثبيت Nginx على الخادوم.
  3. إعداد:

    • الشرح: عملية تكوين إعدادات Nginx لتلبية احتياجات محددة، مثل تحديد المواقع التي يخدمها وتحديد كيفية التعامل مع الطلبات.
  4. Load Balancing:

    • الشرح: توجيه حركة المرور عبر خوادم متعددة لتحسين أداء الموقع وتحقيق توازن في توزيع الحمولة.
  5. SSL/TLS Termination:

    • الشرح: إنهاء التشفير وفك تشفير حركة المرور باستخدام بروتوكولات SSL/TLS، مما يقلل من العبء على الخوادم ويحسن أداء الموقع.
  6. Reverse Proxy:

    • الشرح: توجيه الطلبات من العملاء إلى خوادم ويب خلفية، واستخدام Nginx كوكيل عكسي لحماية الخوادم وتحسين الأمان.
  7. تكوين متقدم:

    • الشرح: تحديد إعدادات دقيقة في ملفات الإعداد لتحقيق مرونة وتكامل عالي في تكوين Nginx.
  8. حماية الحواجز النارية (Firewall):

    • الشرح: القدرة على حماية المواقع من هجمات الحواجز النارية مثل DDoS.
  9. إدارة الصور والملفات الثابتة:

    • الشرح: استخدام Nginx لخدمة الملفات الثابتة مثل الصور، مما يحسن أداء تحميل المواقع.
  10. HTTP/2:

    • الشرح: بروتوكول نقل البيانات الذي يعزز سرعة تحميل الصفحات وتحسين تجربة المستخدم.

باستخدام هذه الكلمات الرئيسية، تم تسليط الضوء على الجوانب المختلفة والمهمة في تثبيت وتكوين واستخدام Nginx كخادم ويب، مما يمنح المستخدم تفاصيل شاملة حول كيفية الاستفادة القصوى من هذه التقنية المتقدمة.

زر الذهاب إلى الأعلى