Nginx: تثبيت، إعداد، وتحسين أداء الويب
مقدمة
يُعتبر Nginx من بين أكثر خوادم الويب استخدامًا في العالم، وذلك بفضل كفاءته العالية في معالجة الطلبات، وسرعته الكبيرة في تقديم المحتوى، وقابليته للتوسع. تم تطوير Nginx لأول مرة في عام 2004 كبديل لخوادم Apache التقليدية، وقد تم تصميمه في البداية للتعامل مع عدد كبير من الطلبات في وقت واحد بطريقة أكثر كفاءة، وهو ما يجعله خيارًا شائعًا للمواقع التي تتطلب أداء عاليًا.
يهدف هذا المقال إلى تقديم شرح تفصيلي حول تثبيت Nginx، إعداداته الأولية، وكيفية تحسين أدائه لتلبية احتياجات مواقع الويب الكبيرة والمتنامية.
الفصل الأول: مقدمة حول Nginx
ما هو Nginx؟
Nginx هو خادم ويب مفتوح المصدر، يتميز بسرعته العالية وقدرته على معالجة عدد كبير من الاتصالات في وقت واحد. إلى جانب كونه خادم ويب، يمكن استخدام Nginx كـ خادم وكيل عكسي (Reverse Proxy) وموازن تحميل (Load Balancer).
Nginx يعتمد على بنية غير متزامنة وموجهة للأحداث، مما يسمح له بالتعامل مع الآلاف من الاتصالات المفتوحة في وقت واحد دون الحاجة إلى إنشاء عمليات منفصلة لكل طلب كما هو الحال في خوادم الويب التقليدية مثل Apache.
مميزات Nginx
- أداء عالي: يتميز Nginx بسرعته في معالجة الطلبات وكفاءته العالية في استخدام الموارد.
- موازنة الحمل: يدعم Nginx توزيع الحمل عبر عدة خوادم لتحسين الأداء وتوزيع الطلبات.
- وكيل عكسي: يعمل Nginx كوكيل بين العميل والخادم الرئيسي لتحسين الأمان والأداء.
- التوافق مع البروتوكولات الحديثة: يدعم Nginx HTTP/2، مما يسهم في تحسين سرعة تحميل الصفحات.
استخدامات Nginx
- خادم ويب: يقدم المحتوى الثابت والملفات الديناميكية.
- وكيل عكسي: يعيد توجيه الطلبات بين العملاء والخوادم الداخلية.
- موازن تحميل: يوزع الطلبات عبر عدة خوادم لتجنب تحميل زائد على خادم واحد.
- وكيل بريد إلكتروني: يمكن استخدامه كوكيل لخوادم البريد الإلكتروني مثل IMAP وPOP3.
الفصل الثاني: تثبيت Nginx
تثبيت Nginx على نظام Linux
تثبيت Nginx يعتمد على نظام التشغيل الذي تستخدمه. هنا سنغطي كيفية تثبيته على أشهر توزيعات Linux مثل Ubuntu وCentOS.
الخطوة 1: تحديث النظام
قبل تثبيت أي برنامج، يجب التأكد من تحديث النظام لضمان الحصول على أحدث الحزم.
bashsudo apt update && sudo apt upgrade # على Ubuntu
sudo yum update # على CentOS
الخطوة 2: تثبيت Nginx
على Ubuntu
sudo apt install nginx
على CentOS
sudo yum install nginx
الخطوة 3: تشغيل Nginx
بعد التثبيت، يمكن بدء تشغيل Nginx باستخدام الأوامر التالية:
bashsudo systemctl start nginx
sudo systemctl enable nginx # لتشغيله تلقائيًا عند بدء النظام
الخطوة 4: التحقق من تثبيت Nginx
بعد تشغيل Nginx، يمكنك التأكد من أنه يعمل بشكل صحيح عن طريق فتح المتصفح وإدخال عنوان IP الخاص بالخادم. يجب أن ترى صفحة الترحيب الافتراضية لـ Nginx.
الخطوة 5: إعداد جدار الحماية
إذا كنت تستخدم UFW (Uncomplicated Firewall) على Ubuntu، تأكد من السماح بحركة المرور على المنافذ المطلوبة:
arduinosudo ufw allow 'Nginx Full'
الفصل الثالث: إعداد Nginx
تعديل ملف الإعدادات الأساسي
ملف إعدادات Nginx الرئيسي يوجد عادة في:
bash/etc/nginx/nginx.conf
من المهم تعديل هذا الملف بعناية لضبط Nginx ليتناسب مع احتياجاتك.
الإعدادات الأساسية
-
worker_processes: هذا الخيار يحدد عدد عمليات Nginx العاملة. القاعدة العامة هي تخصيص عملية لكل نواة CPU.
arduinoworker_processes auto;
-
worker_connections: يحدد عدد الاتصالات التي يمكن لكل عملية التعامل معها في وقت واحد.
yamlworker_connections 1024;
-
keepalive_timeout: يحدد مدة الحفاظ على الاتصال المفتوح مع العميل.
keepalive_timeout 65;
إعداد استضافة مواقع متعددة
إذا كنت تخطط لاستضافة عدة مواقع على نفس الخادم، يمكن إعداد Virtual Hosts. الملفات الخاصة بكل موقع يمكن إضافتها في المجلد:
arduino/etc/nginx/sites-available/
قم بإنشاء ملف جديد لكل موقع يحتوي على إعدادات الموقع:
perlserver {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
بعد إنشاء الملف، يجب تفعيله عبر إنشاء رابط رمزي في مجلد sites-enabled
:
bashsudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
ثم إعادة تشغيل Nginx لتفعيل الإعدادات الجديدة:
sudo systemctl reload nginx
الفصل الرابع: تحسين أداء Nginx
1. تفعيل التخزين المؤقت (Caching)
واحدة من أفضل الطرق لتحسين أداء Nginx هي استخدام التخزين المؤقت. يمكن تمكين التخزين المؤقت في Nginx عبر إعدادات التخزين المؤقت للملفات الثابتة:
mathematicalocation ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public";
}
2. تمكين ضغط Gzip
يعمل ضغط Gzip على تقليل حجم الملفات المرسلة بين الخادم والمتصفح، مما يحسن سرعة التحميل. لتفعيل ضغط Gzip، أضف الإعدادات التالية إلى ملف nginx.conf:
bashgzip on; gzip_types text/plain application/xml application/json text/css application/javascript;
3. ضبط Keep-Alive
تفعيل Keep-Alive يزيد من سرعة الاتصال عن طريق الحفاظ على الاتصالات المفتوحة مع العميل لفترة أطول، مما يقلل من زمن الاستجابة عند تحميل موارد متعددة.
keepalive_timeout 65; keepalive_requests 100;
4. توزيع الحمل باستخدام Nginx
إذا كنت تدير عدة خوادم وتريد توزيع الحمل بينها، يمكنك إعداد Nginx كموازن تحميل:
markdownupstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
location / {
proxy_pass http://backend;
}
}
5. استخدام HTTP/2
HTTP/2 هو إصدار جديد من بروتوكول HTTP يساعد في تسريع تحميل الصفحات. لتفعيله على Nginx، يجب التأكد من تثبيت شهادة SSL ومن ثم تعديل ملف الإعدادات كما يلي:
vbnetlisten 443 ssl http2;
ssl_certificate /path/to/cert.crt;
ssl_certificate_key /path/to/cert.key;
الفصل الخامس: أمان Nginx
1. تفعيل جدران الحماية
من الضروري تفعيل جدار حماية على الخادم لمنع الهجمات. استخدام UFW أو iptables مع ضبط المنافذ المناسبة لحركة المرور الخاصة بـ Nginx يحمي الخادم من الهجمات الشائعة.
2. استخدام SSL/TLS
تفعيل تشفير SSL يحمي البيانات المنقولة بين العميل والخادم. يمكن استخدام Let’s Encrypt للحصول على شهادات SSL مجانية.
csssudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d example.com -d www.example.com
3. تفعيل الحماية ضد الهجمات الشائعة
يمكن استخدام وحدات خارجية مثل ModSecurity أو Fail2Ban لحماية Nginx من هجمات DDoS وBrute Force.
الفصل السادس: مراقبة Nginx وتحسين الأداء
1. مراقبة الأداء باستخدام أدوات مثل Netdata أو Prometheus
يمكن تثبيت أدوات مراقبة لمتابعة أداء الخادم والاتصالات النشطة.
2. مراقبة الأخطاء من خلال ملفات السجلات
توجد ملفات السجلات في /var/log/nginx/
، ومن المهم مراجعة هذه الملفات بانتظام لمتابعة الأخطاء والتأكد من عدم وجود مشاكل في الإعدادات أو الهجمات.
الخاتمة
Nginx هو أحد الحلول الأكثر كفاءة وقوة في تشغيل المواقع على الإنترنت. من خلال التثبيت والإعداد الصحيح، يمكنه تقديم أداء عالٍ وسرعة في معالجة الطلبات. إذا تم تحسين Nginx بالشكل المناسب، يمكن أن يكون وسيلة فعالة لتلبية احتياجات المواقع الضخمة والتعامل مع كميات هائلة من الزيارات.
يجب على المستخدمين الذين يديرون مواقع كبيرة الاستفادة من أدوات تحسين الأداء مثل التخزين المؤقت وضغط Gzip، بالإضافة إلى تأمين الخادم باستخدام SSL وتفعيل جدران الحماية لمنع الهجمات.