كيفية تثبيت Nginx على Ubuntu وربط الدومين وتفعيل SSL مجانًا
دليل عملي لإعداد خادم الويب Nginx وإنشاء أول موقع وتفعيل HTTPS باستخدام Let's Encrypt

بعد الانتهاء من إعداد سيرفر Ubuntu وتأمين الاتصال عبر SSH وتفعيل الجدار الناري UFW، تأتي الخطوة التالية: تثبيت خادم ويب لاستضافة موقع إلكتروني وربطه باسم نطاق (Domain).
ومن أشهر البرامج المستخدمة لهذا الغرض Nginx، وهو خادم ويب مفتوح المصدر يمكن استخدامه لتقديم صفحات المواقع، والعمل بوصفه وكيلًا عكسيًا (Reverse Proxy)، وتوزيع الطلبات بين الخدمات.
لكن تثبيت Nginx وحده لا يكفي لنشر موقع احترافي؛ إذ يجب أيضًا ضبط إعدادات الموقع، وربط الدومين بعنوان السيرفر، وتفعيل اتصال HTTPS باستخدام شهادة TLS صالحة.
في هذا الدليل من حكاية تقنية، سنتعرف على كيفية تثبيت Nginx على Ubuntu Server، وإنشاء أول موقع HTML، وربط الدومين بالسيرفر، والحصول على شهادة SSL مجانية من Let’s Encrypt باستخدام Certbot.
وسنوضح طريقة التحقق من نجاح كل خطوة، وأهم الأخطاء التي قد تواجهك أثناء الإعداد.
ما هو Nginx وما استخداماته؟
Nginx، ويُنطق عادةً «إنجن إكس»، هو برنامج مفتوح المصدر يُستخدم لاستقبال طلبات HTTP وHTTPS ومعالجتها.
ويمكن تشغيله في عدة أدوار، منها:
- خادم ويب لتقديم ملفات HTML وCSS وJavaScript والصور.
- وكيل عكسي لتوجيه الطلبات إلى تطبيقات أخرى.
- موزع أحمال بين عدة خوادم.
- خادم لتقديم الملفات الثابتة.
- طبقة للتخزين المؤقت في بعض إعدادات المواقع.
ويُستخدم Nginx في بيئات استضافة متنوعة، من المواقع الصغيرة إلى الأنظمة التي تتطلب إعدادات أكثر تعقيدًا.
هل Nginx أفضل من Apache؟
لا يوجد خادم ويب أفضل لجميع الاستخدامات.
فكل من Nginx وApache يمتلك ميزات وإمكانات مختلفة، ويتوقف الاختيار على متطلبات التطبيق وخبرة المسؤول عن السيرفر.
يتميز Nginx ببنية تعتمد على معالجة الأحداث، ويمكن أن يكون مناسبًا لتقديم الملفات الثابتة والعمل كوكيل عكسي.
أما Apache فيوفر مرونة كبيرة في بعض بيئات الاستضافة، ومنها دعم إعدادات .htaccess عند استخدام الوحدات المناسبة.
ولا يمكن الجزم بأن أحدهما أسرع دائمًا دون اختبار التطبيق والإعدادات الفعلية.
المتطلبات قبل تثبيت Nginx على Ubuntu
سنستخدم في هذا الشرح بيئة تتضمن:
- سيرفر VPS مثبتًا عليه Ubuntu Server 24.04 LTS.
- مستخدمًا إداريًا يمتلك صلاحيات
sudo. - إمكانية الاتصال بالسيرفر عبر SSH.
- عنوان IPv4 عامًا للسيرفر.
- دومين يمكنك تعديل سجلات DNS الخاصة به.
- إمكانية السماح بالاتصال عبر المنفذين 80 و443.
- وصولًا إلى Console لدى مزود الاستضافة عند الحاجة.
ويفترض الشرح أن السيرفر جديد ولا توجد عليه خدمة أخرى تستخدم المنفذين 80 و443.
تنبيه: إذا كان السيرفر يستضيف مواقع فعلية أو يستخدم cPanel أو Apache أو Docker أو إعدادات Proxy قائمة، فلا تطبق الأوامر مباشرة دون مراجعة الخدمات الحالية.
1. الاتصال بالسيرفر وتحديث Ubuntu
افتح PowerShell أو Windows Terminal أو الطرفية على جهازك، ثم اتصل بالسيرفر:
ssh adminuser@SERVER_IP
استبدل adminuser باسم المستخدم الإداري، وSERVER_IP بعنوان السيرفر.
بعد تسجيل الدخول، حدّث معلومات الحزم:
sudo apt update
ثم ثبّت التحديثات المناسبة:
sudo apt upgrade
راجع التغييرات المعروضة قبل الموافقة، خصوصًا إذا كان السيرفر مستخدمًا بالفعل.
قد تتطلب بعض التحديثات إعادة تشغيل النظام، لذا تحقق من ذلك قبل متابعة تثبيت الخدمات.
2. تثبيت Nginx على Ubuntu
يتوفر Nginx في مستودعات Ubuntu الرسمية، ويمكن تثبيته باستخدام مدير الحزم APT.
نفذ:
sudo apt install nginx
بعد اكتمال التثبيت، تحقق من إصدار البرنامج:
nginx -v
سيعرض الأمر رقم إصدار Nginx المثبت.
لا يشترط أن يكون رقم الإصدار مطابقًا لأحدث إصدار منشور على موقع Nginx؛ فقد تتضمن حزم Ubuntu تصحيحات أمنية مع الاحتفاظ برقم الإصدار الأساسي.
التحقق من حالة خدمة Nginx
نفذ:
sudo systemctl status nginx
إذا كانت الخدمة تعمل، فستظهر الحالة:
active (running)
يمكنك الخروج من شاشة الحالة بالضغط على الحرف q.
ويمكن أيضًا استخدام:
systemctl is-active nginx
إذا أعاد الأمر كلمة active، فهذا يعني أن الخدمة تعمل في تلك اللحظة.
تشغيل Nginx إذا كان متوقفًا
sudo systemctl start nginx
تفعيل التشغيل التلقائي عند إقلاع السيرفر
sudo systemctl enable nginx
هذا الإجراء يساعد على تشغيل الخدمة عند بدء النظام، لكنه لا يغني عن مراقبة حالتها بعد إعادة التشغيل.
3. إعداد الجدار الناري للسماح باتصالات الويب
بعد تثبيت Nginx، يجب التأكد من السماح باتصالات HTTP وHTTPS.
يستخدم HTTP عادةً المنفذ 80، بينما يستخدم HTTPS المنفذ 443.
التحقق من حالة UFW
نفذ:
sudo ufw status verbose
إذا كان UFW مفعّلًا، فيمكن إضافة قواعد السماح التالية:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
ثم تحقق من القواعد:
sudo ufw status numbered
هل يمكن استخدام ملف تعريف Nginx Full؟
نعم، إذا كان ملف تعريف Nginx متاحًا في UFW، يمكنك استخدام:
sudo ufw allow 'Nginx Full'
يسمح هذا الملف عادةً باتصالات HTTP وHTTPS.
يمكن مراجعة الملفات المتاحة باستخدام:
sudo ufw app list
مهم: إذا كان UFW غير مفعّل، فلا تفعّله دون التأكد أولًا من السماح بمنفذ SSH الفعلي وتوفر وسيلة وصول احتياطية.
كذلك تحقق من إعدادات Firewall لدى مزود VPS، لأن السماح بالمنفذ داخل Ubuntu وحده قد لا يكفي.
4. التأكد من عمل Nginx عبر عنوان IP
بعد تشغيل Nginx والسماح بالاتصالات المطلوبة، افتح المتصفح واكتب:
http://SERVER_IP
إذا كان السيرفر متاحًا من الإنترنت وتعمل الإعدادات الافتراضية، فقد تظهر صفحة الترحيب الخاصة بـ Nginx.
يمكنك أيضًا اختبار استجابة HTTP من داخل السيرفر باستخدام:
curl -I http://127.0.0.1
قد يظهر رد مثل:
HTTP/1.1 200 OK
لكن نجاح الاختبار المحلي لا يضمن أن الموقع متاح من الإنترنت؛ إذ قد تمنع الاتصالات قواعد الشبكة الخارجية.
ماذا لو لم تظهر صفحة Nginx؟
تحقق من:
- حالة خدمة Nginx.
- إعدادات UFW.
- جدار الحماية لدى مزود الاستضافة.
- عنوان IP المستخدم.
- وجود خدمة أخرى تستمع على المنفذ 80.
لعرض الخدمات المستمعة على المنافذ، يمكنك استخدام:
sudo ss -tulpn
5. فهم ملفات إعداد Nginx
قبل إنشاء موقع جديد، من المهم معرفة أماكن الملفات الأساسية.
| المسار | الوظيفة |
|---|---|
/etc/nginx/nginx.conf |
ملف الإعداد الرئيسي |
/etc/nginx/sites-available/ |
ملفات إعداد المواقع المتاحة |
/etc/nginx/sites-enabled/ |
روابط إعداد المواقع المفعّلة |
/var/www/html/ |
المجلد الافتراضي لملفات الويب |
/var/log/nginx/access.log |
سجل الطلبات |
/var/log/nginx/error.log |
سجل الأخطاء |
هذه المسارات شائعة في حزم Nginx الخاصة بـ Ubuntu، وقد تختلف في التثبيتات المخصصة.
ما المقصود بـ Server Block؟
Server Block هو جزء من إعداد Nginx يحدد طريقة التعامل مع طلبات موقع معين.
يمكن من خلاله تحديد:
- اسم الدومين.
- المنفذ المستخدم.
- مجلد ملفات الموقع.
- الصفحة الافتراضية.
- إعدادات السجلات.
- إعدادات HTTPS.
- قواعد إعادة التوجيه.
وباستخدام Server Blocks، يمكن استضافة أكثر من موقع على السيرفر نفسه.
6. إنشاء مجلد خاص بالموقع
سنستخدم الدومين example.com لأغراض الشرح.
استبدله بدومين تملكه قبل تنفيذ الأوامر الفعلية.
لإنشاء مجلد الموقع:
sudo mkdir -p /var/www/example.com/html
سيكون هذا المجلد هو المكان الذي تُحفظ فيه ملفات الموقع.
ضبط صلاحيات المجلد
إذا كنت تريد إدارة الملفات باستخدام المستخدم adminuser، يمكنك تنفيذ:
sudo chown -R adminuser:www-data /var/www/example.com/html
ثم:
sudo chmod 755 /var/www/example.com/html
هذه إعدادات أولية لمجلد موقع ثابت، وليست سياسة صلاحيات عامة تصلح لجميع التطبيقات.
لا تجعل مجلدات الموقع قابلة للكتابة من جميع المستخدمين باستخدام 777 لمجرد حل مشكلة الصلاحيات.
7. إنشاء صفحة HTML تجريبية
سننشئ صفحة بسيطة للتأكد من أن Nginx يقدم الملفات بصورة صحيحة.
افتح ملف الصفحة:
nano /var/www/example.com/html/index.html
ثم أضف المحتوى التالي:
<!DOCTYPE html>
<html lang="ar" dir="rtl">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>موقعي الأول على Nginx</title>
</head>
<body>
<h1>مرحبًا بك في موقعي الأول!</h1>
<p>تم إعداد الموقع باستخدام Ubuntu Server وNginx.</p>
</body>
</html>
احفظ الملف باستخدام Ctrl + O ثم Enter، واخرج من المحرر باستخدام Ctrl + X.
الصفحة السابقة مجرد مثال تجريبي، ويمكن لاحقًا استبدالها بملفات موقع HTML كامل.
8. إنشاء Server Block للدومين
الآن سنخبر Nginx بمكان ملفات الموقع والدومين الذي سيستقبل الطلبات.
أنشئ ملف إعداد جديدًا:
sudo nano /etc/nginx/sites-available/example.com
وأضف:
server {
listen 80;
listen [::]:80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;
}
شرح الإعدادات
listen 80: يجعل الموقع يستقبل اتصالات HTTP عبر المنفذ 80.
listen [::]:80: يتيح الاستماع على IPv6 إذا كان مدعومًا ومتاحًا.
server_name: يحدد أسماء النطاقات التي يتعامل معها هذا الموقع.
root: يحدد مجلد الملفات.
index: يحدد اسم ملف الصفحة الافتراضية.
try_files: يبحث عن الملف أو المجلد المطلوب، ويعيد خطأ 404 إذا لم يجده.
access_log وerror_log: يحددان ملفات تسجيل الطلبات والأخطاء.
هذا الإعداد مخصص لموقع HTML ثابت. ستختلف بعض التوجيهات عند تشغيل WordPress أو تطبيق PHP.
9. تفعيل الموقع في Nginx
بعد إنشاء ملف الإعداد، يجب تفعيله.
نفذ:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
ينشئ هذا الأمر رابطًا رمزيًا إلى ملف إعداد الموقع.
اختبار صحة إعداد Nginx
قبل تطبيق أي تغيير، نفذ:
sudo nginx -t
إذا كانت الإعدادات صحيحة، فستظهر رسائل تفيد بنجاح اختبار الصياغة.
أما إذا ظهر خطأ، فاقرأ اسم الملف ورقم السطر وعدّل المشكلة قبل المتابعة.
إعادة تحميل إعدادات Nginx
بعد نجاح الاختبار:
sudo systemctl reload nginx
تسمح إعادة التحميل بتطبيق الإعدادات الجديدة دون الحاجة عادةً إلى إيقاف الخدمة بالكامل.
ماذا عن الموقع الافتراضي؟
قد يبقى ملف الموقع الافتراضي مفعّلًا داخل:
/etc/nginx/sites-enabled/default
يمكن تركه مؤقتًا أثناء اختبار الموقع الجديد، خصوصًا إذا كنت تستخدم عنوان IP للوصول إلى صفحة Nginx الافتراضية.
وإذا قررت تعطيله، فتأكد أولًا من عدم اعتماده في استضافة موقع أو خدمة أخرى.
10. ربط الدومين بعنوان IP الخاص بالسيرفر
بعد إعداد Nginx، يجب توجيه الدومين إلى عنوان السيرفر باستخدام سجلات DNS.
افتح لوحة إدارة DNS لدى الشركة التي تدير سجلات نطاقك.
أضف أو عدّل سجل A للدومين الرئيسي.
مثال لسجلات DNS
| النوع | الاسم | القيمة |
|---|---|---|
| A | @ | عنوان IPv4 للسيرفر |
| A | www | عنوان IPv4 للسيرفر |
يمكن بدلًا من سجل A الخاص بـ www استخدام CNAME يشير إلى الدومين الرئيسي، بحسب إعدادات مزود DNS.
إذا كنت تستخدم IPv6، فأضف سجل AAAA فقط عندما يكون لديك عنوان IPv6 صحيح ومتاح، ويستقبل Nginx الاتصالات عليه.
هل يعمل الدومين فورًا؟
قد تظهر التغييرات بسرعة، لكن وصولها إلى جميع المستخدمين يعتمد على إعدادات DNS والتخزين المؤقت لدى الجهات المختلفة.
لا توجد مدة واحدة مضمونة لجميع الحالات.
كيف تتحقق من سجلات DNS؟
يمكن استخدام:
dig +short example.com A
وللتحقق من www:
dig +short www.example.com A
إذا لم يكن dig مثبتًا، يمكنك تثبيت الحزمة المناسبة التي توفره، أو استخدام أدوات DNS أخرى.
تأكد من أن النتائج تشير إلى عنوان السيرفر الصحيح قبل الانتقال إلى إصدار شهادة HTTPS.
11. اختبار الموقع عبر الدومين
بعد ضبط DNS، افتح:
http://example.com
ثم:
http://www.example.com
إذا كانت السجلات صحيحة وإعدادات Nginx مفعلة، يفترض أن تظهر الصفحة التجريبية.
إذا ظهرت صفحة Nginx الافتراضية
قد يكون السبب:
- عدم مطابقة
server_nameللدومين. - عدم تفعيل Server Block.
- وجود إعداد افتراضي يستقبل الطلب.
- توجيه DNS إلى سيرفر آخر.
- عدم إعادة تحميل Nginx بعد التعديل.
يمكن مراجعة الإعدادات النشطة باستخدام:
sudo nginx -T
تنبيه: قد يعرض هذا الأمر محتوى ملفات إعداد حساسة؛ لا تنشر مخرجاته كاملة في منتدى عام دون مراجعتها.
12. ما الفرق بين SSL وTLS وHTTPS؟
يستخدم كثير من أصحاب المواقع مصطلح «شهادة SSL»، لكن الاتصالات الحديثة تعتمد عمليًا على بروتوكول TLS.
أما HTTPS فهو HTTP عبر اتصال محمي باستخدام TLS.
ما فائدة HTTPS؟
يساعد HTTPS على:
- تشفير البيانات أثناء انتقالها بين المتصفح والخادم.
- التحقق من هوية الخادم وفق نظام الشهادات.
- حماية الاتصال من بعض أنواع التلاعب أثناء النقل.
لكن HTTPS لا يعني أن الموقع محمي من جميع الثغرات، ولا يغني عن تحديث البرامج وتأمين السيرفر.
13. ما هي Let’s Encrypt؟
Let’s Encrypt جهة إصدار شهادات رقمية مجانية ومؤتمتة، تُستخدم لتفعيل HTTPS للمواقع.
يمكن الحصول على شهادة مناسبة لدومينك دون دفع رسوم إصدار للشهادة نفسها.
ومن الأدوات المستخدمة لإدارة هذه الشهادات برنامج Certbot.
ما وظيفة Certbot؟
يساعد Certbot على:
- طلب شهادة TLS.
- إثبات التحكم في الدومين.
- تثبيت الشهادة على خادم الويب في الإعدادات المدعومة.
- إعداد التجديد التلقائي.
- اختبار تجديد الشهادات.
سنستخدم إضافة Nginx الخاصة بـ Certbot لتسهيل العملية.
14. تثبيت Certbot على Ubuntu
توصي وثائق Ubuntu باستخدام حزمة Snap لتثبيت Certbot في هذا السيناريو.
قبل التثبيت، تأكد من توفر Snap في النظام.
يمكنك فحصه باستخدام:
snap version
إذا لم يكن متاحًا، راجع تعليمات Ubuntu الرسمية لتثبيت snapd على إصدارك.
تثبيت Certbot
نفذ:
sudo snap install --classic certbot
بعد نجاح التثبيت، تحقق من الأمر:
/snap/bin/certbot --version
وإذا لم يكن الأمر certbot متاحًا مباشرة من الطرفية، يمكن إنشاء رابط له:
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
لا تنشئ الرابط إذا كان المسار المستهدف مستخدمًا بالفعل؛ تحقق أولًا من مصدر نسخة Certbot الموجودة على السيرفر.
مهم: إذا كان Certbot مثبتًا مسبقًا باستخدام APT أو طريقة أخرى، فراجع طريقة التثبيت الحالية قبل إضافة نسخة ثانية لتجنب تعارض المسارات والإعدادات.
15. إصدار شهادة SSL مجانية باستخدام Certbot
قبل طلب الشهادة، تحقق من الأمور التالية:
- الدومين يشير إلى السيرفر الصحيح.
- موقع HTTP يعمل عبر المنفذ 80.
- يمكن الوصول إلى السيرفر من الإنترنت.
- إعدادات Nginx صحيحة.
- سجلات IPv6، إن وُجدت، تشير إلى وجهة تعمل بصورة صحيحة.
بعد ذلك نفذ:
sudo certbot --nginx -d example.com -d www.example.com
استبدل الدومينين بالأسماء التي تملكها وتريد حمايتها.
إذا كنت لا تستخدم www، فيمكن طلب الشهادة للدومين الرئيسي فقط.
ماذا يحدث أثناء إصدار الشهادة؟
يقوم Certbot بمحاولة إثبات التحكم في الدومين، ثم يطلب شهادة من جهة الإصدار.
وعند استخدام إضافة Nginx، يمكنه تعديل إعدادات خادم الويب لإضافة الشهادة وتفعيل HTTPS.
قد يطلب منك إدخال بريد إلكتروني والموافقة على شروط الخدمة أو تحديد خيارات أخرى بحسب الإصدار والإعدادات.
تنبيه: لا تكرر طلب الشهادات بصورة عشوائية عند حدوث خطأ؛ اقرأ سبب الفشل أولًا، لأن جهة الإصدار تفرض حدودًا على بعض أنواع الطلبات.
16. اختبار HTTPS بعد تثبيت الشهادة
بعد نجاح Certbot، افتح المتصفح وانتقل إلى:
https://example.com
وتحقق من أن الصفحة تُعرض دون تحذيرات متعلقة بالشهادة.
يمكنك أيضًا اختبار استجابة الخادم باستخدام:
curl -I https://example.com
ماذا يجب أن تتحقق منه؟
- أن الشهادة صالحة للدومين المستخدم.
- أن المتصفح لا يعرض تحذيرًا أمنيًا.
- أن الصفحة المطلوبة تظهر بصورة صحيحة.
- أن روابط الصور والملفات تستخدم HTTPS عند الحاجة.
- أن الدومينين الرئيسي و
wwwيعملان إذا أعددتهما معًا.
يمكنك الاستعانة بأدوات فحص TLS مثل SSL Labs للتحقق من إعدادات الخادم بصورة أكثر تفصيلًا.
17. تحويل زوار HTTP إلى HTTPS
بعد التأكد من نجاح HTTPS، يُفضل توجيه طلبات HTTP إلى النسخة الآمنة من الموقع.
يمكن أن يقدم Certbot خيارًا لإعداد إعادة التوجيه تلقائيًا، بحسب نسخته وإعداداته.
إذا لم تُفعّل إعادة التوجيه، فراجع إعدادات Nginx الناتجة بعد إصدار الشهادة، وأضف سياسة تحويل مناسبة دون إنشاء تعارض بين Server Blocks.
لماذا نستخدم إعادة التوجيه؟
لمنع بقاء نسختين يمكن الوصول إليهما عبر HTTP وHTTPS، ولتشجيع استخدام الاتصال المشفر.
لكن لا تضف قواعد تحويل عشوائية قبل التأكد من أن الشهادة تعمل بصورة صحيحة.
هل يجب تفعيل HSTS؟
ليس ضروريًا في الخطوات الأولى.
HSTS سياسة تجعل المتصفح يلتزم باستخدام HTTPS لفترة محددة.
وقد يؤدي تفعيلها بإعدادات غير مناسبة إلى مشكلات في الوصول، خصوصًا عند انتهاء الشهادة أو وجود نطاقات فرعية غير مجهزة.
لذلك من الأفضل تأجيلها إلى مرحلة ضبط الأمان المتقدم.
18. التأكد من التجديد التلقائي لشهادة SSL
شهادات Let’s Encrypt ليست دائمة، ولذلك يجب تجديدها قبل انتهاء صلاحيتها.
تدعم تثبيتات Certbot المعتادة آلية تجديد تلقائي.
اختبار التجديد
نفذ:
sudo certbot renew --dry-run
يحاكي هذا الأمر عملية التجديد للتحقق من إمكانية نجاحها دون الاعتماد على انتظار انتهاء صلاحية الشهادة.
التحقق من خدمة التجديد
في تثبيت Certbot باستخدام Snap، يمكن مراجعة المؤقت:
sudo systemctl status snap.certbot.renew.timer
وقد تختلف آلية الجدولة بحسب طريقة التثبيت.
ماذا لو فشل التجديد؟
تحقق من:
- استمرار توجيه DNS إلى السيرفر الصحيح.
- إمكانية الوصول إلى المنفذ المطلوب للتحقق.
- عدم وجود أخطاء في إعدادات Nginx.
- عدم تعارض الخدمات أو الجدار الناري.
- سجلات Certbot التي توضح سبب الفشل.
لا تعتمد على نجاح الإصدار الأول فقط؛ اختبر التجديد وراقب انتهاء صلاحية الشهادة.
19. أهم أوامر إدارة Nginx
بعد تثبيت Nginx، ستحتاج إلى بعض الأوامر لإدارته.
| الأمر | الوظيفة |
|---|---|
sudo systemctl status nginx |
عرض حالة الخدمة |
sudo systemctl start nginx |
تشغيل الخدمة |
sudo systemctl stop nginx |
إيقاف الخدمة |
sudo systemctl restart nginx |
إعادة تشغيل الخدمة |
sudo systemctl reload nginx |
إعادة تحميل الإعدادات |
sudo nginx -t |
اختبار صحة الإعدادات |
nginx -v |
عرض إصدار Nginx |
sudo journalctl -u nginx |
مراجعة سجل الخدمة |
نصيحة: استخدم sudo nginx -t قبل إعادة تحميل الإعدادات بعد كل تعديل مهم.
20. كيفية استضافة أكثر من موقع باستخدام Nginx
يمكن استضافة عدة مواقع على VPS واحد باستخدام Server Blocks منفصلة.
على سبيل المثال، يمكنك إنشاء:
/etc/nginx/sites-available/example.com
و:
/etc/nginx/sites-available/example.net
ويكون لكل موقع مجلد ملفات وإعداد server_name خاص به.
يمكن أيضًا إصدار شهادات TLS لكل موقع وفق الأسماء التي تريد حمايتها.
هل تحتاج إلى عنوان IP مستقل لكل موقع؟
ليس بالضرورة.
يدعم Nginx استضافة عدة مواقع على عنوان IP واحد، مع اختيار الإعداد المناسب بحسب اسم المضيف والاتصال.
لكن يجب مراعاة الموارد المتاحة والعزل الأمني بين التطبيقات.
21. تحسين أمان Nginx بعد التثبيت
تفعيل HTTPS خطوة مهمة، لكنه ليس الإجراء الأمني الوحيد.
تحديث Nginx بانتظام
استخدم مستودعات موثوقة، وراجع التحديثات الأمنية المتاحة.
تقليل الخدمات المكشوفة
لا تفتح منافذ إضافية دون حاجة.
حماية ملفات الإعداد
تأكد من أن المستخدمين غير المصرح لهم لا يستطيعون تعديل إعدادات Nginx أو قراءة الملفات الحساسة.
مراقبة سجلات الأخطاء
يمكن مراجعة سجل الأخطاء العام باستخدام:
sudo tail -n 50 /var/log/nginx/error.log
الاحتفاظ بنسخ احتياطية
احتفظ بنسخة من ملفات الموقع وإعدادات Nginx والشهادات أو آلية استعادتها، وفق سياسة نسخ احتياطي مناسبة.
تجنب النسخ العشوائي لإعدادات الأداء
لا توجد مجموعة إعدادات واحدة تحقق أفضل أداء لجميع المواقع.
فعدد الاتصالات والتخزين المؤقت والمهلات يعتمد على طبيعة التطبيق وموارد السيرفر.
22. أخطاء شائعة عند تثبيت Nginx وتفعيل SSL
الخطأ: الموقع لا يعمل عبر الدومين
تحقق من سجلات DNS، واسم الدومين داخل server_name، وإعدادات الجدار الناري.
الخطأ: Nginx لا يبدأ التشغيل
قد يكون هناك خطأ في الإعداد أو برنامج آخر يستخدم المنفذ نفسه.
ابدأ بفحص:
sudo nginx -t
ثم:
sudo systemctl status nginx
الخطأ: 403 Forbidden
قد يكون السبب عدم وجود ملف افتراضي مناسب، أو مشكلة في صلاحيات الوصول، أو إعداد يمنع عرض الملفات.
الخطأ: 404 Not Found
قد يكون المسار المطلوب غير موجود، أو أن توجيه root أو try_files لا يطابق بنية الموقع.
الخطأ: Certbot لا يستطيع التحقق من الدومين
راجع DNS وإمكانية الوصول إلى المنفذ 80، وتأكد من عدم وجود إعدادات Proxy أو إعادة توجيه غير مناسبة.
الخطأ: شهادة HTTPS لا تشمل www
يجب أن تتضمن الشهادة اسم www إذا كنت تريد تقديم الموقع بهذا الاسم.
الخطأ: ERR_TOO_MANY_REDIRECTS
قد يحدث بسبب قواعد إعادة توجيه متعارضة بين Nginx وخدمة Proxy خارجية أو التطبيق.
لا تضف قواعد جديدة قبل تحديد مصدر التحويلات الحالية.
23. هل يمكن تشغيل WordPress باستخدام Nginx؟
نعم، لكن WordPress يحتاج إلى مكونات إضافية.
فبالإضافة إلى Nginx، ستحتاج عادةً إلى:
- PHP مع PHP-FPM.
- قاعدة بيانات متوافقة مثل MariaDB أو MySQL.
- إعدادات Nginx مناسبة لتوجيه طلبات PHP.
- صلاحيات ملفات صحيحة.
- إعدادات أمان ونسخ احتياطي.
- شهادة HTTPS صالحة.
ولا يكفي رفع ملفات WordPress إلى مجلد الموقع الثابت الذي أنشأناه في هذا الشرح.
سنخصص دليلًا مستقلًا لتثبيت هذه المكونات وإعداد WordPress بصورة صحيحة.
الأسئلة الشائعة حول تثبيت Nginx على Ubuntu
هل Nginx مجاني؟
نعم، يتوفر Nginx مفتوح المصدر مجانًا، مع وجود منتجات وخدمات تجارية مرتبطة به.
هل يمكن تثبيت Nginx على VPS صغير؟
نعم، لكن الموارد المطلوبة تعتمد على حجم الموقع والتطبيقات والخدمات الأخرى الموجودة على السيرفر.
هل أحتاج إلى cPanel لتشغيل Nginx؟
لا. يمكن تثبيت Nginx وإدارته مباشرة من سطر الأوامر دون لوحة تحكم.
هل يمكن استخدام Nginx مع Apache؟
نعم، يمكن استخدامهما معًا في بنى معينة، مثل تشغيل Nginx بوصفه وكيلًا عكسيًا أمام Apache، لكن ذلك يحتاج إلى إعداد مناسب للمنافذ وتوجيه الطلبات.
هل شهادة Let’s Encrypt مجانية؟
نعم، إصدار الشهادات من Let’s Encrypt مجاني. لكن قد توجد تكاليف منفصلة للاستضافة أو إدارة السيرفر أو خدمات إضافية.
هل شهادة SSL تحسن سرعة الموقع؟
لا تضمن الشهادة وحدها زيادة السرعة. يتوقف الأداء على إعدادات الخادم والبروتوكولات المستخدمة والتطبيق والشبكة.
هل يمكن تثبيت Nginx دون دومين؟
نعم، يمكنك تثبيته واختباره باستخدام عنوان IP. لكن إصدار شهادة Let’s Encrypt لدومين يتطلب إثبات التحكم في الأسماء المطلوبة، كما أن إعداد الشهادة لعنوان IP يختلف عن المثال المستخدم في هذا الدليل.
هل يمكن استضافة أكثر من دومين على VPS واحد؟
نعم، باستخدام Server Blocks منفصلة، بشرط توفر الموارد وضبط الإعدادات المناسبة لكل موقع.
هل يجب إعادة تشغيل Nginx بعد كل تعديل؟
ليس دائمًا. غالبًا يمكن استخدام reload لتطبيق تغييرات الإعداد بعد نجاح nginx -t.
هل يتجدد SSL تلقائيًا؟
يمكن أن يتجدد تلقائيًا عند إعداد Certbot بصورة صحيحة، لكن يجب اختبار آلية التجديد ومراقبتها.
الخلاصة
تعلمنا في هذا الدليل كيفية تثبيت Nginx على Ubuntu وإعداد أول موقع HTML وربط الدومين بعنوان السيرفر، ثم تفعيل HTTPS باستخدام شهادة مجانية من Let’s Encrypt وCertbot.
بدأنا بتثبيت Nginx والتحقق من عمل الخدمة، ثم أنشأنا مجلد الموقع وملف Server Block، وبعد ذلك ضبطنا سجلات DNS واختبرنا الموقع.
وأخيرًا، تعرفنا على إصدار شهادة TLS واختبار التجديد التلقائي وأهم الإجراءات التي تساعد على الحفاظ على استقرار الخادم وأمانه.
إذا كنت تبدأ رحلتك في إدارة السيرفرات، فننصحك بقراءة المقالين السابقين على حكاية تقنية:
- ما هو VPS؟ دليل شامل لفهم السيرفرات الافتراضية واختيار الاستضافة المناسبة.
- كيفية إعداد سيرفر Ubuntu وتأمينه باستخدام SSH وUFW.
وفي الدليل القادم، سننتقل إلى تثبيت PHP وMariaDB وإعداد WordPress على سيرفر Ubuntu باستخدام Nginx.



