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 المناسب بناءً على السيناريو اللي بتواجهه علشان تحصل على أداء مثالي وتوجيه آمن.