مقدمة
يُعد Nginx أحد أشهر خوادم الويب في العالم، وهو مسؤول عن استضافة بعض أكبر المواقع وأكثرها زيارةً على الإنترنت. وهو خيار خفيف الوزن، ويمكن استخدامه كخادم ويب أو وكيل عكسي.
في هذا الدليل، سنناقش تثبيت Nginx على خادم Ubuntu 20.04، وإعداد جدار الحماية، وإدارة عملية Nginx، وإعداد كتل الخادم لاستضافة أكثر من مجال واحد من خادم واحد.
المتطلبات الأساسية
- قبل البدء في هذا الدليل، يجب أن يكون لديك مستخدم عادي غير جذر يتمتع بامتيازات sudo على الخادم الخاص بك.
- لشراء خادم أوبونتو انقر افعلها.
الخطوة 1 – تثبيت Nginx
نظرًا لأن Nginx متوفر في مستودعات Ubuntu الافتراضية، فيمكن تثبيته من هذه المستودعات باستخدام نظام الحزم apt.
بما أن هذا أول تعامل لنا مع نظام حزم apt في هذه الجلسة، فسنُحدّث دليل الحزم المحلي للوصول إلى أحدث قوائم الحزم. بعد ذلك، يُمكننا تثبيت nginx:
sudo apt update
sudo apt install nginxبعد قبول الإجراء، سيقوم apt بتثبيت Nginx وأي تبعيات مطلوبة على الخادم الخاص بك.
الخطوة 2 – تكوين جدار الحماية
قبل اختبار Nginx، يجب تهيئة برنامج جدار الحماية للسماح بالوصول إلى الخدمة. بعد التثبيت، يُسجل Nginx نفسه كخدمة لدى ufw، مما يُسهّل الوصول إلى Nginx.
قم بإدراج تكوينات التطبيق التي يعرف ufw كيفية العمل معها عن طريق الكتابة:
sudo ufw app list
يجب أن تحصل على قائمة بملفات تعريف التطبيق:
Output
Available applications:
Nginx Full
Nginx HTTP
Nginx HTTPS
OpenSSHكما هو موضح في الإخراج، هناك ثلاثة ملفات تعريف لـ Nginx:
- Nginx كامل: يفتح هذا الملف الشخصي كل من المنفذ 80 (حركة مرور ويب عادية غير مشفرة) والمنفذ 443 (حركة مرور مشفرة باستخدام TLS/SSL).
- Nginx HTTP: يفتح هذا الملف الشخصي المنفذ 80 فقط (حركة مرور ويب عادية وغير مشفرة)
- Nginx HTTPS: يفتح هذا الملف الشخصي المنفذ 443 فقط (حركة مرور مشفرة عبر TLS/SSL)
يُنصح بتفعيل ملف التعريف الأكثر تقييدًا الذي يسمح بمرور البيانات المُهيأة. حاليًا، نحتاج فقط للسماح بمرور البيانات على المنفذ 80.
يمكنك تمكين ذلك عن طريق الكتابة:
sudo ufw allow 'Nginx HTTP'
يمكنك تأكيد هذا التغيير عن طريق الكتابة:
sudo ufw status
يُظهر الإخراج حركة مرور HTTP المسموح بها:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)الخطوة 3 – التحقق من خادم الويب الخاص بك
بعد انتهاء عملية التثبيت، سيبدأ تشغيل Nginx في Ubuntu 20.04. يجب أن يكون خادم الويب قد بدأ بالفعل.
يمكننا القيام بذلك عن طريق الكتابة:
systemctl status nginx
Output
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-04-20 16:08:19 UTC; 3 days ago
Docs: man:nginx(8)
Main PID: 2369 (nginx)
Tasks: 2 (limit: 1153)
Memory: 3.5M
CGroup: /system.slice/nginx.service
├─2369 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
└─2380 nginx: worker processكما تم تأكيده في هذه الحالة، بدأت الخدمة بنجاح. مع ذلك، أفضل طريقة لاختبار ذلك هي طلب صفحة من Nginx.
يمكنك الوصول إلى صفحة Nginx الافتراضية بالانتقال إلى عنوان IP الخاص بخادمك للتحقق من عمل البرنامج بشكل صحيح. إذا كنت لا تعرف عنوان IP الخاص بخادمك، يمكنك العثور عليه باستخدام أداة icanhazip.com، والتي ستمنحك عنوان IP العام الخاص بك كما لو كان واردًا من موقع آخر على الإنترنت:
curl -4 icanhazip.com
بمجرد حصولك على عنوان IP الخاص بخادمك، أدخله في شريط عنوان المتصفح الخاص بك:
http://your_server_ipيجب أن تحصل على صفحة Nginx الافتراضية:
إذا كنت موجودًا في هذه الصفحة، فهذا يعني أن الخادم الخاص بك يعمل بشكل صحيح وجاهز للإدارة.
الخطوة 4 – إدارة عملية Nginx
الآن بعد أن قمت بإعداد خادم الويب الخاص بك، دعنا نراجع بعض الأوامر الإدارية الأساسية.
لإيقاف خادم الويب الخاص بك، اكتب:
sudo systemctl stop nginx
لبدء تشغيل خادم الويب إذا توقف، اكتب:
sudo systemctl start nginx
لإيقاف الخدمة ثم إعادة تشغيلها، اكتب:
sudo systemctl restart nginx
إذا كنت تُجري تغييرات على التكوين فقط، فغالبًا ما يُمكن إعادة تحميل Nginx دون انقطاع الاتصالات. للقيام بذلك، اكتب:
sudo systemctl reload nginx
افتراضيًا، يتم تكوين Nginx ليبدأ تلقائيًا عند تشغيل الخادم. إذا لم يكن هذا ما تريده، يمكنك تعطيله بكتابة:
sudo systemctl disable nginx
لإعادة تمكين الخدمة للبدء عند بدء التشغيل، يمكنك كتابة:
sudo systemctl enable nginx
لقد تعلمت الآن الأوامر الإدارية الأساسية ويجب أن تكون جاهزًا لتكوين موقعك لاستضافة أكثر من نطاق واحد.
الخطوة 5 - إعداد كتل الخادم (مستحسن)
عند استخدام خادم الويب Nginx، يُمكن استخدام كتل الخادم (المُشابهة للمُضيفين الافتراضيين في Apache) لتغليف تفاصيل التكوين واستضافة أكثر من نطاق من خادم واحد. سنُنشئ نطاقًا باسم your_domain، ولكن يُنصح باستبداله باسم نطاقك الخاص.
في أوبونتو 20.04، يُفعّل Nginx كتلة خادم افتراضيًا، وهي مُهيأة لعرض مستندات خارج مجلد /var/www/html. يعمل هذا بشكل جيد لموقع واحد، ولكنه قد يُصبح مُرهقًا إذا كنت تستضيف مواقع متعددة. بدلًا من تغيير /var/www/html، لنُنشئ بنية مجلد في /var/www لموقع your_domain، ونترك /var/www/html كمجلد افتراضي للعرض في حال عدم توافقه مع طلب العميل. مواقع أخرى
قم بإنشاء دليل لـ your_domain على النحو التالي، باستخدام العلامة -p لإنشاء أي أدلة رئيسية ضرورية:
sudo mkdir -p /var/www/your_domain/html
بعد ذلك، قم بتعيين ملكية الدليل باستخدام متغير البيئة $USER:
sudo chown -R $USER:$USER /var/www/your_domain/html
إذا لم تُغيّر قيمة umask، التي تُعيّن أذونات الملفات الافتراضية، فيجب أن تكون أذونات جذر الويب لديك صحيحة. لضمان صحة أذوناتك والسماح للمالك بقراءة الملفات وكتابتها وتنفيذها، مع منح أذونات القراءة والتنفيذ للمجموعات والآخرين فقط، يمكنك إدخال الأمر التالي:
sudo chmod -R 755 /var/www/your_domain
بعد ذلك، قم بإنشاء صفحة index.html نموذجية باستخدام nano أو محرر النصوص المفضل لديك:
sudo nano /var/www/your_domain/html/index.html
بالداخل، أضف عينة HTML التالية:
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain server block is working!</h1>
</body>
</html>احفظ الملف وأغلقه بالضغط على Ctrl+X للخروج، ثم اضغط على Y ثم Enter عند مطالبتك بالحفظ.
لكي يُقدّم Nginx هذا المحتوى، عليك إنشاء كتلة خادم بالتعليمات الصحيحة. بدلًا من تعديل ملف التكوين الافتراضي مباشرةً، لنُنشئ ملفًا جديدًا في /etc/nginx/sites-available/your_domain:
sudo nano /etc/nginx/sites-available/your_domain
قم بلصق كتلة التكوين التالية، والتي تشبه الكتلة الافتراضية، ولكن تم تحديثها لدليلنا الجديد واسم المجال:
server {
listen 80;
listen [::]:80;
root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;
server_name your_domain www.your_domain;
location / {
try_files $uri $uri/ =404;
}
}لاحظ أننا قمنا بتحديث تكوين الجذر إلى دليلنا الجديد واسم الخادم إلى اسم المجال الخاص بنا.
بعد ذلك، دعنا نقوم بتمكين الملف عن طريق إنشاء رابط منه إلى دليل sites-enabled، والذي سيقرأ منه Nginx عند بدء تشغيله:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
الآن تم تمكين وتكوين كتلتي خادم للاستجابة للطلبات استنادًا إلى توجيهات listen وserver_name (يمكنك قراءة المزيد حول كيفية معالجة Nginx لهذه التوجيهات هنا):
- نطاقك: يستجيب للطلبات الخاصة بـ your_domain و www.your_domain.
- تقصير: يستجيب لأي طلب على المنفذ 80 لا يتطابق مع الكتلتين الأخريين.
لتجنب مشكلة ذاكرة دلو التجزئة المحتملة التي قد تنشأ عن إضافة أسماء خوادم إضافية، من الضروري تعيين قيمة واحدة في ملف /etc/nginx/nginx.conf. افتح الملف:
sudo nano /etc/nginx/nginx.conf
ابحث عن أمر server_names_hash_bucket_size، ثم احذف الرمز # لإلغاء تعليق السطر. إذا كنت تستخدم nano، يمكنك البحث بسرعة عن الكلمات في الملف بالضغط على CTRL وw.
...
http {
...
server_names_hash_bucket_size 64;
...
}
...احفظ الملف وأغلقه عند الانتهاء.
بعد ذلك، قم بإجراء اختبار للتأكد من عدم وجود أخطاء نحوية في أي من ملفات Nginx الخاصة بك:
sudo nginx -t
إذا لم تكن هناك أي مشاكل، أعد تشغيل Nginx لكي تسري التغييرات التي أجريتها:
sudo systemctl restart nginx
سيُقدّم Nginx الآن اسم نطاقك. يمكنك اختبار ذلك بالذهاب إلى http://your_domain، حيث سترى ما يلي:
الخطوة 6 - التعرف على ملفات ومجلدات Nginx المهمة
الآن بعد أن تعرفت على كيفية إدارة خدمة Nginx نفسها، يجب أن تأخذ بضع دقائق للتعرف على بعض الدلائل والملفات المهمة.
محتوى
- /var/www/html: محتوى الويب الفعلي، والذي يتكون افتراضيًا من صفحة Nginx الافتراضية التي شاهدتها سابقًا، يُعرض خارج مجلد /var/www/html. يمكن تغيير ذلك بتعديل ملفات تهيئة Nginx.
تكوين الخادم
- /etc/nginx: دليل إعدادات Nginx. جميع ملفات إعدادات Nginx موجودة هنا.
- /etc/nginx/nginx.conf: ملف تهيئة Nginx الرئيسي. يُمكن تعديله لإجراء تغييرات على تهيئة Nginx العامة.
- /etc/nginx/المواقع-المتاحة/: دليل يُخزَّن فيه كتل الخادم لكل موقع. لن يستخدم Nginx ملفات التكوين في هذا الدليل إلا إذا كانت مرتبطة بدليل المواقع المُفعَّلة. عادةً، تُجرى جميع عمليات تكوين كتل الخادم في هذا الدليل، ثم تُفعَّل بالارتباط بدليل آخر.
- /etc/nginx/sites-enabled/: الدليل الذي تُخزَّن فيه كتل الخادم النشطة لكل موقع. عادةً، يتم إنشاؤها بالربط بملفات التكوين في دليل الموقع الحالي.
- /etc/nginx/snippets: يحتوي هذا الدليل على أجزاء تكوين يمكن تضمينها في أي مكان آخر ضمن إعدادات Nginx. تُعد أقسام التكوين القابلة للتكرار مرشحة جيدة لإعادة هيكلتها إلى أجزاء.
تقارير الخادم
- /var/log/nginx/access.log: يتم تسجيل كل طلب إلى خادم الويب الخاص بك في ملف السجل هذا ما لم يتم تكوين Nginx بخلاف ذلك.
- /var/log/nginx/error.log: يتم تسجيل أي أخطاء Nginx في هذا السجل.
نتيجة
الآن بعد أن قمت بتثبيت خادم الويب الخاص بك، لديك العديد من الخيارات لنوع المحتوى والتقنيات التي تريد استخدامها لإنشاء تجربة أكثر ثراءً.











