#خوادم الويب

3
مقالة
ووردبريس

تسريع موقع ووردبريس على Nginx باستخدام FastCGI Cache

يُعتبر تحسين أداء المواقع الإلكترونية أمراً بالغ الأهمية في عالم الويب هذه الآونة. مع ازدياد عدد الزوار والمحتوى؛ يصبح تحميل الصفحات السريع أمراً ضرورياً لتوفير تجربة مستخدم مميزة وزيادة ترتيب موقعك في نتائج محركات البحث. إذا كنت تستخدم Nginx كخادم ويب، فإن تفعيل التخزين المؤقت (Caching) يمكن أن يكون من أفضل الطرق لتحسين أداء موقعك بشكل ملحوظ. في هذا المقال، سنناقش كيفية استخدام التخزين المؤقت مع Nginx لتحسين سرعة التحميل وأداء موقعك بشكل عام. ما هو التخزين المؤقت في Nginx؟ التخزين المؤقت (Caching) هو عملية تخزين نسخ مؤقتة من المحتوى الذي يتم طلبه بشكل متكرر، مثل الصفحات الثابتة، الصور، واستجابات قواعد البيانات. بدلاً من إعادة إنشاء أو طلب المحتوى في كل مرة يزور فيها المستخدم موقعك، يتم استخدام النسخة المخزنة من هذا المحتوى، مما يقلل من الضغط على الخادم ويزيد من سرعة استجابة الموقع. Nginx يعتبر من أسرع خوادم الويب المتاحة، ويتميز بقدرته على إدارة عدد كبير من الاتصالات المتزامنة. عند تفعيل التخزين المؤقت، يصبح بإمكانه تقديم استجابات أسرع بكثير عن طريق تقليل زمن الوصول إلى البيانات المتكررة. استخدام Redis لتسريع مواقع ووردبريس للحصول على موقع أسرع 10 مرات، قم بدمج استخدام Redis مع Nginx FastCGI Cache تعلّم كيف ↗ لماذا التخزين المؤقت مفيد؟ تقليل زمن تحميل الصفحات (Page Load Time): بدلاً من معالجة الطلبات من البداية في كل مرة، يمكن لـ Nginx تقديم الصفحات المخزنة مباشرة من ذاكرته المؤقتة. تقليل استهلاك الموارد: التخزين المؤقت يقلل من عدد الاستعلامات على قاعدة البيانات وعمليات معالجة الـ PHP، مما يخفض الحمل على الخادم ويزيد من كفاءته. تحسين تجربة المستخدم: المواقع الأسرع توفر تجربة أفضل للمستخدمين، مما يزيد من معدلات الاحتفاظ بالمستخدمين وتقليل معدلات الارتداد (Bounce Rate). تحسين SEO: سرعة الموقع هي أحد العوامل الهامة لترتيب محركات البحث. المواقع التي تتمتع بسرعة تحميل أفضل تحصل عادة على ترتيب أعلى في نتائج البحث. أنواع التخزين المؤقت في Nginx هناك عدة أنواع من التخزين المؤقت يمكن تفعيلها على خادم Nginx، وهي: التخزين المؤقت على مستوى المتصفح (Browser Caching): يقوم المتصفح بتخزين نسخ من الموارد الثابتة مثل الصور والملفات النصية محلياً، مما يسمح له بعرض الصفحات بشكل أسرع عند زيارة المستخدم للموقع مرة أخرى. التخزين المؤقت على مستوى الخادم (Server-Side Caching): Nginx يمكنه تخزين استجابات HTTP وإعادتها للمستخدمين دون الحاجة إلى إعادة معالجة الطلبات في كل مرة. التخزين المؤقت لملفات Static: يتضمن تخزين الملفات الثابتة مثل CSS وJavaScript وHTML في الذاكرة المؤقتة. كيفية تفعيل التخزين المؤقت في Nginx 1. تفعيل التخزين المؤقت للملفات الثابتة (Static Files Caching) أول خطوة لتحسين أداء موقعك هي تفعيل التخزين المؤقت للملفات الثابتة. الملفات مثل الصور، ملفات CSS، وJavaScript غالباً لا تتغير كثيراً، لذا يمكن تخزينها لفترات طويلة لتقليل عدد الطلبات التي يتعامل معها الخادم. افتح ملف إعدادات Nginx الرئيسي (عادةً /etc/nginx/nginx.conf) وأضف الإعدادات التالية: http { # إعدادات التخزين المؤقت للملفات الثابتة location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 30d; # تخزين الملفات لمدة 30 يومًا add_header Cache-Control "public"; } } expires 30d: هذا التوجيه يخبر المتصفح بتخزين الملفات لمدة 30 يومًا. Cache-Control: هذا الهيدر يحدد أن الملفات يمكن أن تخزن في ذاكرة التخزين المؤقت. 2. تفعيل التخزين المؤقت لاستجابات PHP بما أنك تستخدم PHP لتوليد صفحاتك، فإن تخزين استجابات PHP يمكن أن يقلل من وقت المعالجة بشكل كبير. لتفعيل هذا النوع من التخزين المؤقت، يمكنك استخدام FastCGI Caching. في ملف nginx الخاص بموقعك، وقبل بداية server ، سنضيف سطر fastcgi_cache_path ، ثم سنقوم بإضافة الأسطر الخاصة بالكاش داخل location ~ \.php$ كما هو موضح في المثال التالي: # إعدادات FastCGI Cache fastcgi_cache_path /var/cache/nginx/multaqaweb.com levels=1:2 keys_zone=multaqaweb.com:100m inactive=60m; server { # الأكواد الحالية location ~ \.php$ { # الأكواد الحالية fastcgi_cache multaqaweb.com; fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache_valid 200 60m; fastcgi_cache_valid 404 1m; fastcgi_cache_use_stale error timeout invalid_header updating; } # الأكواد الحالية } ثم أضف الإعدادات التالية إلى ملف nginx.conf: fastcgi_cache_key "$scheme$request_method$http_host$request_uri"; add_header Fastcgi-Cache $upstream_cache_status; fastcgi_cache_path: يحدد موقع تخزين الملفات المؤقتة. fastcgi_cache_key: يحدد مفتاح التخزين المؤقت بناءً على عنوان URL. fastcgi_cache_valid: يحدد مدة صلاحية الكاش المخزن (في هذا المثال 60 دقيقة للصفحات السليمة و1 دقيقة للصفحات غير الموجودة). fastcgi_cache_use_stale: يسمح بإرجاع النسخة القديمة من المحتوى في حالة حدوث خطأ أثناء إعادة توليد الصفحة الحالية. من الضروري تعطيل الكاش في الصفحات التي يجب ألا تقوم بإرجاع نسخ قديمة أو محفوظة للمستخدمين، قم بوضع كود الاستثناءات قبل أول location داخل ملف إعدادات nginx الخاص بموقعك: set $skip_cache 0; # إذا كانت الطريقة هي POST، قم بتعيين $skip_cache إلى 1 if ($request_method = POST) { set $skip_cache 1; } # إذا كان هناك سلسلة استعلام في الرابط، قم بتعيين $skip_cache إلى 1 if ($query_string != "") { set $skip_cache 1; } # لا تستخدم الكاش للروابط التالية if ($request_uri ~* "/wp-admin/|/wp-json/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") { set $skip_cache 1; } # لا تستخدم الكاش للمستخدمين المسجلين أو الذين علقوا مؤخرًا if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; } 3. التخزين المؤقت على مستوى المتصفح يمكنك التحكم في التخزين المؤقت على مستوى المتصفح عن طريق إضافة توجيهات في ملف إعدادات Nginx. يُفضل تخزين الملفات الثابتة لفترات أطول، بينما يتم تحديث الصفحات الديناميكية بشكل متكرر. location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ { expires 365d; # تخزين الملفات لمدة عام add_header Cache-Control "public"; } location / { expires 1h; # تخزين الصفحات لمدة ساعة add_header Cache-Control "private, no-store"; } 4. تطهير الذاكرة المؤقتة (Cache Purging) يتم إخلاء الذاكرة المؤقتة تلقائيًا عند تعديل أو إضافة محتوى جديد في موقعك على ووردبريس عن طريق إضافة Nginx Cache ، قم بتثبيت الإضافة ثم توجّه إلى الأدوات > Nginx Cache ، ثم أضف مسار التخزين المؤقت الذي قم بتعريفه مسبقًا، في هذه الحالية سيكون الرابط كالتالي: /var/cache/nginx/multaqaweb.com يجب تحديد خيار Automatically flush the cache when content changes للسماح بحذف الكاش بشكل تلقائي عند تحديث المحتوى. أيضًا في بعض الأحيان يمكنك استخدام Nginx Cache Purge لتطهير ملفات التخزين المؤقتة يدويًا أو تلقائيًا. لتمكين هذه الميزة، تحتاج إلى إعداد رابط خاص لتطهير ملفات الكاش: location ~ /purge(/.*) { allow 127.0.0.1; # السماح بالوصول فقط من خلال localhost deny all; fastcgi_cache_purge WORDPRESS "$scheme$request_method$host$1"; } بعد الانتهاء من كافة الخطوات، يجب إعادة تشغيل سيرفر Nginx عن طريق الأمر التالي: sudo service nginx restart فوائد التخزين المؤقت في Nginx تخفيف الحمل على الخادم: تقليل عدد الطلبات التي يتم توجيهها إلى الخادم وقاعدة البيانات، مما يقلل من استهلاك الموارد. تسريع موقع ووردبريس: المحتوى المخزن يتم تقديمه بسرعة أكبر مقارنةً بتوليد المحتوى من الصفر في كل مرة. تحسين تجربة المستخدم: المواقع الأسرع تعزز من رضا الزوار وتزيد من احتمالية العودة مرة أخرى. تحسين ترتيب الموقع في محركات البحث: سرعة الموقع تلعب دورًا مهمًا في تصنيفات SEO، والتخزين المؤقت يساعد في تحسين هذه السرعة. استكشاف الأخطاء وإصلاحها التحقق من صحة التخزين المؤقت:يمكنك التحقق من صحة إعدادات التخزين المؤقت من خلال طلب محتوى الموقع باستخدام أداة مثل cURL: curl -I https://yourdomain.com ضبط إعدادات التخزين المؤقت:قد تحتاج إلى تعديل إعدادات التخزين المؤقت بناءً على نوع المحتوى الذي تقدمه وحجم الزيارات. حاول تجريب أوقات صلاحية مختلفة وتأكد من أن المحتوى الديناميكي يتم تحديثه بشكل صحيح. خاتمة استخدام التخزين المؤقت مع Nginx هو إحدى أفضل الطرق لتحسين أداء موقعك الإلكتروني. من خلال تفعيل التخزين المؤقت على مستوى الملفات الثابتة واستجابات PHP، يمكنك تقليل زمن تحميل الصفحات، تخفيف الحمل على الخادم، وتحسين تجربة المستخدم بشكل كبير. نأمل أن يكون هذا الدليل قد قدم لك فهمًا شاملًا لكيفية تطبيق التخزين المؤقت في Nginx لتحسين أداء موقعك. يمكننا حجز وإدارة السيرفر الخاص بك عن طريق ملتقى الويب تحسين وإدارة السيرفرات اتصل بنا الآن

استضافة المواقع

ما هو NGINX؟ خادم ويب قوي فائق السرعة لموقعك

تُعدّ خوادم الويب بمثابة الركائز الأساسية التي تُبنى عليها المواقع الإلكترونية. ومن بين تلك الخوادم، يبرز اسم nginx (إنجن إكس) كأحد أشهر وأقوى الخيارات المتاحة، مُقدّمًا أداءً فائقًا وكفاءةً استثنائيةً في إدارة المحتوى وتوجيه حركة الزوار. ما هو nginx؟ ببساطة، nginx هو خادم ويب مفتوح المصدر، يُستخدم لتقديم المحتوى على الإنترنت بكفاءة وسرعة فائقتين. يُعرف nginx بقدرته على التعامل مع عدد هائل من الاتصالات المتزامنة، ممّا يجعله خيارًا مثاليًا للمواقع الإلكترونية ذات الترافيك العالي. مميزات nginx: الأداء العالي: يتميز nginx بسرعته الفائقة وكفاءته في معالجة الطلبات، ممّا يضمن تجربة مستخدم سلسة وسريعة. قلة استهلاك الموارد: لا يتطلب nginx الكثير من موارد النظام للعمل، ممّا يجعله خيارًا مثاليًا للمواقع الإلكترونية التي تعمل على خوادم ذات إمكانيات محدودة. الموثوقية: يُعدّ nginx خادمًا ويبًا موثوقًا للغاية، حيث يُمكنه العمل لفترات طويلة دون أي انقطاعات. سهولة الاستخدام: يتميز nginx بواجهة تكوين بسيطة وسهلة الاستخدام، ممّا يجعله خيارًا مثاليًا للمبتدئين. التعددية: يُمكن استخدام nginx لتقديم مجموعة واسعة من الخدمات، بما في ذلك: خادم ويب: تقديم المحتوى الثابت والديناميكي. وكيل عكسي: توجيه حركة الزوار إلى خوادم ويب أخرى. خادم بروكسي: توفير الوصول الآمن إلى المحتوى عبر الإنترنت. خادم بريد إلكتروني: إرسال واستقبال رسائل البريد الإلكتروني. كيف يعمل nginx؟ يعتمد nginx على نموذج معالجة الحدث (event-driven model)، ممّا يعني أنه يُمكنه التعامل مع العديد من الاتصالات المتزامنة في وقت واحد باستخدام عدد قليل من العمليات. مقارنة nginx مع خوادم الويب الأخرى: غالبًا ما تتم مقارنة nginx بخادم الويب الشهير الآخر، Apache. يتميز nginx بسرعته وكفاءته في التعامل مع عدد كبير من الاتصالات المتزامنة، بينما يُعدّ Apache خيارًا أفضل لتقديم المحتوى الديناميكي. استخدامات nginx: يُستخدم nginx على نطاق واسع لتقديم مجموعة واسعة من المواقع الإلكترونية، بما في ذلك: مواقع الويب ذات الزّيارات المرتفعة: مثل مواقع التواصل الاجتماعي ومواقع التجارة الإلكترونية. التطبيقات الإلكترونية: مثل تطبيقات الويب وتطبيقات الجوال. الخدمات عبر الإنترنت: مثل خدمات البريد الإلكتروني وخدمات تخزين الملفات. أنظمة إدارة المحتوى: عادةً ما يُستخدم nginx للحصول على موقع ووردبريس سريع. كيفية تثبيت nginx: يُمكن تثبيت nginx بسهولة على مختلف أنظمة التشغيل، بما في ذلك Linux و Windows و macOS. موارد تعليمية: تتوفر العديد من الموارد التعليمية لتعلم كيفية استخدام nginx، بما في ذلك: الموقع الرسمي لـ nginx: https://docs.nginx.com/ وثائق nginx: https://nginx.org/en/docs/ مدونات ومواقع تعليمية: مثل https://www.freecodecamp.org/news/the-nginx-handbook/ خاتمة: يُعدّ nginx خادم ويب قويًا وفعالًا يُمكنه تلبية احتياجات مختلف أنواع المواقع الإلكترونية.

استضافة المواقع

الفرق بين Apache و Nginx: دليل سهل للمبتدئين

إذا كنت تخطط لاستضافة موقع على الويب أو تطبيق ويب، فإن اختيار السيرفر أو خادم الويب المناسب يعد قرارًا حيويًا يؤثر بشكل كبير على أداء واستقرار مشروعك الرقمي. هناك العديد من خوادم الويب المتاحة، ولكن أشهرها Apache وNginx، وهي تعتبر من بين أبرز خوادم الويب المستخدمة على نطاق واسع، وتشكل كل منهما خيارًا قويًا بناءً على احتياجات مختلفة. في هذا المقال، سنقوم بتوضيح الفارق بين Apache وNginx بطريقة سهلة ومفهومة، خاصةً للمبتدئين، سنستعرض مجموعة من الميزات المهمة مثل الأداء، استهلاك الذاكرة، دعم اللغات، وسهولة التكوين والإدارة، بهدف مساعدتك في اختيار الخادم الذي يتناسب أكثر مع احتياجات مشروعك. إذا كنت مبتدئًا؛ ألق نظرة أولا عن المقالات السابقة ما هو السيرفر أو خادم الويب. ما هو NGINX (إنجن إكس) مقارنة بين Apache و Nginx يرجى مراعاة أن هذه الميزات قد تتغير مع إصدارات جديدة من الخوادم، ويفضل دائمًا مراجعة الوثائق الرسمية لكل خادم للحصول على معلومات دقيقة ومحدثة. Apache HTTP Server Documentation Nginx documentation الميزة (Feature)ApacheNginxنوع الرخصة (License)(Apache License)(2-clause BSD-like license)اللغة المستخدمة (Language)(C)(C)نظام التشغيل المدعوم (Supported OS)(Cross-platform)(Cross-platform)الأداء (Performance)(يميل إلى أداء جيد لكن يعتمد على الإعداد)(يُعتبر أفضل في التعامل مع الأحمال العالية)استهلاك الذاكرة (Memory Usage)(قد يستهلك كميات كبيرة من الذاكرة لتعامل مع الاتصالات الكبيرة)(استهلاك منخفض للذاكرة، خاصة في حالات الضغط العالي)التعامل مع الاتصالات المتزامنة (Concurrency Handling)(أداء محدود في حالة الاتصالات المتزامنة)(تعامل جيد مع الاتصالات المتزامنة)دعم معالجة الطلبات الثابتة (Static Content Handling)(جيد)(ممتاز، يعتبر متفوق في هذا المجال)دعم لغات البرمجة (Programming Language Support)(دعم للعديد من لغات البرمجة والتقنيات)(يُركز بشكل أساسي على خدمة ملفات الصور والصفحات الثابتة)سهولة التكوين والإدارة (Ease of Configuration and Administration)(سهل التكوين والإدارة)(سهل التكوين ولديه واجهة إدارة بسيطة وفعالة)دعم توجيه الملفات (File Rewriting Support)(يدعم توجيه الملفات بواسطة mod_rewrite)(يدعم توجيه الملفات بواسطة ngx_http_rewrite_module)دعم الوحدات الإضافية (Module Support)(لديه نظام وحدات إضافية قوي)(يُفضل للحد الأدنى من الوحدات الإضافية)دعم CGI (Common Gateway Interface)(يدعم)(لا يدعم بشكل أساسي، ولكن يمكن تحقيقه باستخدام FastCGI)دعم SSL/TLS(يدعم)(يدعم، ويُعتبر موثوقًا في أمان الاتصالات)دعم تحميل الأحمال (Load Balancing Support)(يمكن تحقيقه باستخدام وحدات إضافية مثل mod_proxy_balancer)(يدعم بشكل مدمج، ويُستخدم على نطاق واسع كخادم توجيه)دعم WebSocket(يدعم مع تكوين إضافي)(يدعم بشكل أساسي من خلال ngx_http_websocket_module)دعم HTTP/2(يدعم، ولكن قد يتطلب تكوين إضافي)(يدعم بشكل أساسي)مرونة التكوين (Configuration Flexibility)(يوفر مرونة كبيرة في التكوين)(يُعتبر بسيطًا ومرونًا في التكوين)دعم IPv6(يدعم)(يدعم)دعم الأمان والحماية (Security Features)(يوفر مجموعة من ميزات الأمان)(مصمم ليكون آمنًا من البداية، ويُستخدم في بيئات الإنترنت الحساسة)دعم الكاش (Caching Support)(يدعم بشكل جيد مع وحدات إضافية)(يدعم بشكل جيد من خلال ngx_http_proxy_module) يجب أيضًا مراعاة أن هذه المقارنة تقدم نظرة عامة ويمكن تكييفها حسب متطلبات المشروع الخاص بك. Apache vs Nginx بشكل مفصل سنوضح هنا بعض التفاصيل والفروقات الأساسية بين Apache وNginx 1. نموذج المعالجة (Processing Model): Apache (أباتشي): يستخدم نموذج معالجة معتمد على العمليات (process-based). لكل طلب من المستخدم، يقوم Apache بإنشاء عملية جديدة (process) لخدمته. يعني ذلك أنه يمكن أن يكون مكلفًا من حيث استهلاك الموارد والذاكرة. Nginx (إنجينكس): يستخدم نموذج معالجة معتمد على الأحداث (event-driven). يدير العديد من الاتصالات في نفس العملية بدلاً من إنشاء عملية جديدة لكل طلب. هذا يجعل Nginx أكثر كفاءة من حيث استخدام الموارد وأقل استهلاكًا للذاكرة. 2. الأداء (Performance): Apache: يعمل بشكل جيد عندما يكون هناك عدد محدود من الزوار. يمكن تحسين أدائه باستخدام تكنولوجيا مثل “mod_php” لمعالجة صفحات PHP. Nginx: يتفوق على Apache في التعامل مع حمولة عالية. يمكنه التعامل مع العديد من الزوار بكفاءة على أجهزة محدودة. 3. قدرات تكنولوجيا الويب (Web Technology Capabilities): Apache: يدعم مجموعة متنوعة من لغات البرمجة والتقنيات مثل PHP وPerl وPython. يتيح للمطورين مرونة كبيرة في تخصيص إعدادات الخادم. Nginx: يُعتبر موجه أكثر لخوادم الويب والخدمات والواجهات البرمجية الخفيفة والسريعة. يمكن استخدامه كخادم وبروكسي (proxy server) في نفس الوقت. 4. الأمان (Security): Apache: يعتبر آمنًا وموثوقًا به، ولكن يمكن أن يكون عرضة لبعض الهجمات إذا لم يتم إعداده بشكل صحيح. Nginx: يعتبر أكثر أمانًا بشكل عام وأقل عرضة للهجمات. يُستخدم على نطاق واسع في تكنولوجيا الويب الحديثة بسبب سمعته الجيدة في مجال الأمان. 5. التعلم والمستندات (Learning Curve and Documentation): Apache: لديه مجتمع وثائق وموارد واسعة، وهو مناسب للمستخدمين الذين يبحثون عن تفصيل وتخصيص كبير. Nginx: يتميز بتوثيق جيد وبسيط، مما يجعله مناسبًا للمبتدئين. يحظى بشعبية متزايدة بين المطورين. الاستنتاج النهائي في الختام، يعتمد اختيارك بين Apache وNginx على احتياجات مشروعك ومستوى خبرتك. إذا كنت مبتدئًا وتبحث عن حلاً سهلاً وفعالًا لاستضافة موقع الويب الخاص بك، فإن Nginx قد يكون الخيار الأفضل. من ناحية أخرى، إذا كنت بحاجة إلى تخصيص كبير وتنوع في لغات البرمجة، قد يكون Apache هو الحل المناسب لك. بغض النظر عن اختيارك، يجب أن تضمن دائمًا تكوين الخادم بشكل آمن وفقًا لأفضل الممارسات لضمان حماية موقعك وتوفير أفضل تجربة للمستخدمين.

إعلان