إعداد Nginx من الصفر: تجاوز الإعدادات الافتراضية وفهم لغز الصلاحيات
تطوير المواقع

إعداد Nginx من الصفر: تجاوز الإعدادات الافتراضية وفهم لغز الصلاحيات

المستوى: متوسط الوقت: 15 المشاهدات: 160 التاريخ: 2026-04-10
متطلبات قبل البدء:
  • نظام لينكس (Ubuntu أو Debian)
  • تثبيت برنامج Nginx
  • صلاحيات المسؤول (Sudo)
  • متصفح إنترنت

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

تعطيل ومسح ملف الإعدادات الافتراضي

في نظام Debian، يعتمد Nginx على مجلدين للإعدادات:

sites-available: يحتوي على جميع ملفات الإعدادات (المفعلة وغير المفعلة).

sites-enabled: يحتوي على اختصارات (Symlinks) للملفات التي نريد تفعيلها فقط.

لتعطيل الموقع الافتراضي، نقوم بحذف الاختصار الخاص به من مجلد التفعيل:

sudo rm /etc/nginx/sites-enabled/default

(ملاحظة: يمكنك أيضاً حذف الملف من sites-available تماماً من النظام عبر sudo rm /etc/nginx/sites-available/default، ولكن حذف الاختصار يكفي لتعطيله وهو الإجراء الأكثر أماناً).

إنشاء مجلد الموقع وملف تجريبي

قبل كتابة الإعدادات، لنقم بإنشاء مجلد خاص بموقعك الجديد (سنسميه mywebsite كمثال) ونضع فيه ملف HTML بسيط للتجربة:

إنشاء المجلد:

sudo mkdir -p /var/www/mywebsite

إنشاء ملف تجريبي (index.html):

echo "Welcome to My New Custom Nginx Server" | sudo tee /var/www/mywebsite/index.html

سر الصلاحيات: لماذا www-data؟

هنا نصل إلى النقطة الأهم. www-data هو اسم المستخدم (User) والمجموعة (Group) الافتراضي الذي يعمل من خلاله Nginx (وأغلب خوادم الويب في Debian).

إذا قمت برفع ملفات موقعك باستخدام حسابك الشخصي (أو كـ Root)، فإن Nginx لن يتمكن من قراءتها ليعرضها للزوار، وسيظهر للزائر خطأ 403 Forbidden.

لذلك، يجب أن نخبر النظام أن المالك الفعلي لملفات الموقع هو الخادم (www-data):

تغيير المالك إلى www-data:

sudo chown -R www-data:www-data /var/www/mywebsite

ضبط أذونات القراءة والكتابة (Permissions):

كأفضل ممارسة أمنية، يجب أن تكون المجلدات بصلاحية 755 (المالك يمكنه التعديل، والكل يمكنه القراءة)، والملفات بصلاحية 644:

sudo find /var/www/mywebsite -type d -exec chmod 755 {} \;
sudo find /var/www/mywebsite -type f -exec chmod 644 {} \;

إنشاء ملف الإعدادات الجديد

الآن حان وقت ربط هذا المجلد بـ Nginx. سنقوم بإنشاء ملف إعدادات جديد:

sudo nano /etc/nginx/sites-available/mywebsite

(هذا سيفتح محرر نصوص داخل الشاشة السوداء. انسخ الكود التالي والصقه هناك):

server {
    listen 80;
    
    # ضع هنا عنوان الـ IP لخادمك أو الدومين الخاص بك
    server_name localhost;

    # مسار ملفات الموقع الذي أنشأناه
    root /var/www/mywebsite;
    
    # الملف الافتراضي الذي سيتم تشغيله
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}

للحفظ والخروج من المحرر: اضغط Ctrl + O ثم Enter للحفظ، وبعدها Ctrl + X للخروج.

تفعيل الموقع الجديد وتشغيله

الآن الملف موجود في sites-available، لتفعيله يجب أن ننشئ له اختصاراً في sites-enabled:

إنشاء رابط التفعيل:

sudo ln -s /etc/nginx/sites-available/mywebsite /etc/nginx/sites-enabled/

توضيح بسيط للأمر:

- الأمر (ln -s) يعني: إنشاء "اختصار" أو ما يُعرف بالرابط الرمزي (Symbolic Link).

- الفكرة ببساطة: نحن هنا لا ننسخ الملف، بل نصنع له اختصاراً (Shortcut) داخل مجلد sites-enabled.

- السبب: خادم Nginx يقوم بتشغيل المواقع التي يجدها في مجلد sites-enabled فقط. استخدام هذه الطريقة ذكي جداً؛ لأنك إذا أردت إيقاف الموقع مستقبلاً، يمكنك ببساطة حذف هذا الاختصار وسيتوقف الموقع، بينما يبقى ملف إعداداتك الأصلي آمناً ومحفوظاً في مجلد sites-available.

فحص الإعدادات (خطوة احترافية لتجنب الأعطال):

قبل إعادة تشغيل الخادم، يجب أن نتأكد أننا لم نخطئ في كتابة الكود:

sudo nginx -t

إذا رأيت رسالة syntax is ok و test is successful، فأنت في السليم!

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

sudo systemctl reload nginx

الآن افتح متصفحك واكتب عنوان الـ IP الخاص بخادمك. سترى رسالة الترحيب الجديدة الخاصة بك بدلاً من صفحة Nginx الافتراضية!

ملاحظة ختامية: الصورة الكبرى (كيف يعمل كل هذا؟)

قبل أن نختم، قد تتساءل: كيف عرف Nginx أن عليه قراءة الملف الذي وضعناه في مجلد sites-enabled؟

السر يكمن في "المدير العام" للخادم؛ وهو الملف الأساسي المسمى nginx.conf (الموجود في مسار /etc/nginx/). هذا الملف يحتوي على أمر "استدعاء" (Include) يطلب منه قراءة وتطبيق أي إعدادات نضعها داخل sites-enabled.

الهدف من هذا التصميم الذكي هو الترتيب ومنع الفوضى وتداخل الإعدادات. فبدلاً من تكديس إعدادات كل مواقعك في ملف واحد ضخم ومعقد، نقوم بتنظيمها في ملفات مستقلة ومرتبة كما فعلنا اليوم. بالطبع، يمكنك دائماً التعديل على ملف nginx.conf الأساسي متى ما احتجت لضبط إعدادات عامة تطبق على كامل الخادم، ولكن لإدارة المواقع الفردية، فالطريقة التي تعلمناها للتو هي المعيار الأفضل والأنسب.

مصادر وروابط إضافية

المصادر المعتمدة

التعليقات

شارك في النقاش

يجب عليك تسجيل الدخول لتتمكن من كتابة تعليق والتفاعل مع المحتوى.

تسجيل الدخول باستخدام حساب Google

لا توجد تعليقات حتى الآن. كن أول من يشاركنا رأيه!