Difference Between root and alias directives in Nginx

لما بتجهز سيرفر الويب Nginx علشان يقدم ملفات ثابتة أو يوجه الـ requests لمواقع معينة على النظام، ممكن تستخدم directive root أو alias. رغم إن الاثنين شكلهم زي بعض، لكن في فرق كبير بينهم، والخلط بينهم ممكن يسبب مشاكل في التوجيه أو أمان الملفات.

1. الـ root directive

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

مثال:

server {
    listen 80;
    server_name example.com;

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

في المثال ده، لو حد طلب http://example.com/index.html، Nginx هيدور على الملف في المسار /var/www/html/index.html.

2. الـ alias directive

alias بيختلف شوية، لأنه بيحدد مجلد بديل لمكان معين. بيتستخدم كتير لما تكون عايز توجه جزء معين من الـ requests لمجلد مختلف خالص.

مثال:

server {
    listen 80;
    server_name example.com;

    location /images/ {
        alias /var/www/media/;
    }
}

في المثال ده، لو حد طلب http://example.com/images/photo.jpg، Nginx هيدور على الملف في المسار /var/www/media/photo.jpg، مش في /var/www/media/images/photo.jpg.

3. الفرق الرئيسي

الفرق الأساسي بين root و alias بيظهر في الطريقة اللي Nginx بيعالج بيها المسار:

  • مع root، Nginx بيجمع المسار المطلوب مع المسار اللي انت محدده في root.
  • مع alias، Nginx بيستبدل جزء المسار اللي بيتطابق مع alias بدون ما يجمعهم.

4. إمتى تستخدم root وإمتى تستخدم alias؟

  • استخدم root لما تكون عايز تحدد مسار رئيسي يشمل كل الطلبات أو نطاق واسع منها.
  • استخدم alias لما تحتاج توجه مسار معين لمجلد مختلف تمامًا، خصوصًا لو المجلد الجديد مش بنفس التركيب النسبي للمسار.

الخاتمة

فهم الفرق بين root و alias في Nginx مهم علشان تضمن التوجيه الصح للطلبات وتحمي الملفات الحساسة على السيرفر. لازم تستخدم الـ directive المناسب بناءً على السيناريو اللي بتواجهه علشان تحصل على أداء مثالي وتوجيه آمن.