ديف أوبس

تنصيب وإعداد Nginx كخادم ويب

تنصيب، إعداد واستخدام Nginx كخادوم ويب

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

1. مقدمة عن Nginx

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

يعتبر Nginx خادماً خفيف الوزن وفعالاً، فهو يستهلك موارد نظام أقل مقارنة مع خوادم ويب أخرى مثل Apache. يتميز بسرعة استجابته العالية، ودعمه للعديد من البروتوكولات مثل HTTP وHTTPS وWebSocket.

2. متطلبات النظام

قبل أن تبدأ في تثبيت Nginx، يجب التأكد من أن النظام لديك يلبي المتطلبات الأساسية التالية:

  • نظام تشغيل: Nginx يعمل على أنظمة Linux وUnix وWindows. لكن يوصى باستخدامه على توزيعات لينكس مثل أوبونتو و ديبيان.

  • الذاكرة: 512 ميجابايت من الذاكرة العشوائية (RAM) كحد أدنى.

  • التخزين: مساحة تخزين 10 جيجابايت أو أكثر للتثبيت وحفظ الملفات.

  • الوصول إلى الإنترنت: من الضروري تنزيل الحزم من الإنترنت أثناء التثبيت.

3. تنصيب Nginx

3.1 على نظام Ubuntu/Debian

لتنصيب Nginx على نظام Ubuntu أو Debian، يمكن اتباع الخطوات التالية:

  1. تحديث قائمة الحزم:
    أولاً، يجب تحديث قائمة الحزم المتاحة لتضمين أحدث الإصدارات من Nginx.

    bash
    sudo apt update
  2. تثبيت Nginx:
    بعد تحديث الحزم، يمكنك تثبيت Nginx باستخدام الأمر التالي:

    bash
    sudo apt install nginx
  3. التحقق من التثبيت:
    بعد إتمام عملية التثبيت، يمكن التأكد من أن Nginx تم تثبيته بنجاح عن طريق التحقق من حالته باستخدام الأمر:

    bash
    sudo systemctl status nginx

    ستظهر لك رسالة تفيد أن الخدمة تعمل بشكل جيد. يمكنك أيضًا فتح متصفح الويب الخاص بك والذهاب إلى عنوان IP الخاص بالخادم أو localhost. إذا كان كل شيء على ما يرام، سترى صفحة الترحيب الخاصة بـ Nginx.

3.2 على نظام CentOS/RHEL

إذا كنت تستخدم نظام CentOS أو RHEL، يمكن تثبيت Nginx كالتالي:

  1. تثبيت مستودع EPEL:

    bash
    sudo yum install epel-release
  2. تثبيت Nginx:

    bash
    sudo yum install nginx
  3. تشغيل الخدمة:

    bash
    sudo systemctl start nginx
  4. تمكين Nginx للعمل عند بدء التشغيل:

    bash
    sudo systemctl enable nginx
  5. التحقق من التثبيت:
    نفس الطريقة كما في Ubuntu يمكن استخدامها للتحقق من حالة الخدمة.

4. إعداد Nginx

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

4.1 هيكل المجلدات

يتم تخزين ملفات تكوين Nginx في مجلد /etc/nginx. بالإضافة إلى ذلك، يتم تخزين ملفات المواقع في /var/www/html.

  1. ملفات التكوين:

    • nginx.conf: يحتوي على الإعدادات العامة لـ Nginx.

    • sites-available و sites-enabled: هذه المجلدات تتعامل مع إعدادات المواقع التي يمكن تفعيلها أو تعطيلها.

4.2 إعداد الموقع الافتراضي

عند تثبيت Nginx، يتم إعداد موقع افتراضي. يمكن تعديل هذا الموقع وفقًا لاحتياجاتك.

  1. اذهب إلى مجلد إعدادات المواقع:

    bash
    cd /etc/nginx/sites-available
  2. افتح الملف الافتراضي باستخدام محرر النصوص:

    bash
    sudo nano default
  3. يمكنك تعديل هذا الملف ليحتوي على إعدادات الموقع الخاص بك، مثل تغيير root إلى المسار الذي يحتوي على ملفات الموقع، وتحديد server_name إلى اسم النطاق الذي تريد استخدامه.

4.3 تمكين الموقع

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

bash
sudo ln -s /etc/nginx/sites-available/default /etc/nginx/sites-enabled/

ثم قم بإعادة تحميل Nginx لتطبيق التغييرات:

bash
sudo systemctl reload nginx

5. استخدام Nginx كخادم عكسي (Reverse Proxy)

يُستخدم Nginx بشكل شائع كخادم عكسي لتحسين أداء الخوادم عبر توزيع الحمل على عدة خوادم خلفية. لتكوين Nginx كخادم عكسي:

  1. افتح ملف إعدادات الموقع:

    bash
    sudo nano /etc/nginx/sites-available/default
  2. قم بتعديل إعدادات location لتوجيه الطلبات إلى الخوادم الخلفية:

    nginx
    server { listen 80; server_name example.com; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
  3. بعد حفظ التغييرات، قم بإعادة تحميل Nginx:

    bash
    sudo systemctl reload nginx

6. تفعيل HTTPS باستخدام Let’s Encrypt

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

6.1 تثبيت Certbot

لتثبيت Certbot (أداة Let’s Encrypt لتوليد الشهادات) على Ubuntu:

bash
sudo apt install certbot python3-certbot-nginx

6.2 الحصول على شهادة SSL

بعد تثبيت Certbot، يمكنك الحصول على شهادة SSL باستخدام الأمر التالي:

bash
sudo certbot --nginx -d example.com

يتعين عليك استبدال example.com باسم النطاق الخاص بك. سيقوم Certbot بتكوين Nginx تلقائيًا لاستخدام HTTPS.

6.3 تجديد الشهادات

تجديد الشهادات يتم تلقائيًا، ولكن يمكنك اختبار التجديد يدويًا باستخدام الأمر:

bash
sudo certbot renew --dry-run

7. تحسين أداء Nginx

7.1 تمكين الضغط (Gzip)

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

nginx
gzip on; gzip_types text/plain text/css application/javascript; gzip_min_length 1000;

7.2 إعدادات التخزين المؤقت

لتسريع تحميل المحتوى الثابت مثل الصور والملفات الأخرى، يمكنك استخدام التخزين المؤقت (caching). لتفعيل التخزين المؤقت، افتح ملف التكوين وأضف هذه الإعدادات:

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

7.3 تقليل عدد العمليات

تعد ضبط عدد العمليات والعمال من الخيارات المهمة في تحسين أداء الخادم. يمكن تحديدها في ملف nginx.conf كما يلي:

nginx
worker_processes auto; worker_connections 1024;

8. مراقبة Nginx

لمراقبة أداء Nginx، يمكنك استخدام أدوات مثل htop و netstat لمراقبة العمليات، أو يمكنك استخدام الأدوات المتخصصة في مراقبة أداء الخوادم مثل New Relic و Datadog.

9. الاستنتاج

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