يبلغ قطر كلاً من إنجن إكس و Apache منتجات ناضجة تتميز بمجموعات ميزات غنية وأداء عالٍ. تشترك في أصول مفتوحة المصدر، ويمكنك نشرها على خوادم Windows أو Linux.
ومع ذلك، فإن بعض الاختلافات الرئيسية قد تجعلك تختار أحدهما على الآخر.
على سبيل المثال، Apache هو حل شامل يدعم العديد من التقنيات والوحدات النمطية المختلفة فورًا. في المقابل، يعتمد Nginx على وحدات نمطية خارجية لتوسيع وظائفه.
لكي نرى أي خادم ويب قد يناسب احتياجاتك بشكل أفضل، دعنا نتعمق أكثر في هذه الخيارات.
نظرة عامة
Apache، خادم الويب الأصلي للبطل
تم إنشاؤها في عام 1995 بواسطة روبرت ماكول وأُطلق عليه في الأصل اسم "Apache "مشروع خادم HTTP" (ومن هنا جاء الاسم)، Apache صُمم لإنشاء خادم تجاري قوي ومجاني الاستخدام، حتى مع التعديلات. انتشر بسرعة كبيرة بفضل إمكانية تشغيله على أنظمة تشغيل مختلفة، من يونكس إلى ويندوز.
بسبب هذه الشعبية طويلة الأمد، أعتقد Apache كخادم الويب "البطل الأصلي". إنه قوي، وموثق جيدًا، ويدعمه مجتمع مفتوح من المطورين تحت رعاية Apache مؤسسة البرمجيات.
Nginx، عملاق العصر الجديد
Nginx (يُنطق "Engine X") هو خادم HTTP وخادم وكيل عكسي، وخادم وكيل بريد، وخادم وكيل عام TCP/UDP يُستخدم لاستضافة مواقع الويب والتطبيقات بجميع أحجامها. أُطلق لأول مرة علنًا بواسطة مطور روسي. إيجور سيسوييفكان الهدف الأولي لـ Nginx هو حل مشكلة C10K التي Apache ناضلت من أجل الإدارة.
في عام ٢٠١٩، انضمت Nginx إلى F2019 Networks. F5 هي شركة تكنولوجيا متخصصة في أمن التطبيقات، وإدارة السحابة المتعددة، ومنع الاحتيال عبر الإنترنت.
حصص السوق والميزات
سوق الاسهم
الاختلافات الرئيسية
| شرح المميزات: | إنجن إكس | Apache |
|---|---|---|
| أدخلت | 2004 | 1995 |
| الإصدار المستقر الحالي | إنجين إكس 1.27.0 | Apache 2.4.63 |
| معمار | الحدث يحركها | عملية مدفوعة |
| مفتوحة المصدر | نعم | نعم |
| التطوير والدعم | Apache الأساس | شبكات F5 |
| المنصات المدعومة | يونكس في المقام الأول | يونكس وويندوز |
| طلبات متعددة متزامنة | نعم | لا |
| معالجة المحتوى الديناميكي الأصلي | لا | نعم |
| وحدات | نعم | نعم |
| الاعداد | محدود | لكل دليل عبر .htaccess |
| طلب الترجمة | يمرر URI | يمرر موقع نظام الملفات |
العمارة الأساسية
نجينكس و Apache يتشابه كلاهما في بنيتهما الأساسية. على سبيل المثال، يستخدم كلاهما عمليات رئيسية لتحسين الأداء. حتى أن ملفات التكوين متشابهة. ومع ذلك، فإن الاختلافات في الأسلوب المعماري تؤدي إلى تباين كبير في الأداء.
يتميز Nginx ببنية مُدارة بالأحداث، سهلة الاستخدام للموارد، وتستخدم كميات صغيرة ولكن ثابتة من الذاكرة أثناء التحميل. هذه الميزة تجعله مثاليًا لاستضافة مواقع الويب ذات معدلات الزيارات العالية أو تلك التي تشهد ارتفاعات متقطعة في الزيارات.
Apacheتتعامل بنية المعالجة الخاصة بـ 's' مع كل اتصال عبر خيط مخصص، مما يتطلب ذاكرة أكبر. ومع ذلك، فهي تتوسع بشكل أفضل تحت الأحمال الثقيلة على الأجهزة ذات عدد أكبر من أنوية المعالج وذاكرة الوصول العشوائي (RAM).
استخدام الذاكرة
يتميز Nginx بأدائه العالي واستهلاكه المنخفض للموارد. من ناحية أخرى، Apache قد يستهلك الكثير من الذاكرة، خاصةً عند تشغيل عدة كتل خادم. بينما يستخدم كلاهما الذاكرة لمعالجة طلبات HTTP، فإن Nginx أخف وزنًا.
تصميم Apache يعني ذلك أنه يُنشئ خيطًا واحدًا لكل اتصال، ويستهلك كل خيط قدرًا معينًا من ذاكرة الوصول العشوائي (RAM). مع زيادة حركة البيانات، قد يؤدي ذلك إلى مشاكل، إذ يتطلب الأمر مزيدًا من ذاكرة الوصول العشوائي (RAM)، خاصةً على الخوادم ذات الذاكرة الأقل. Apache كما يقوم أيضًا بإنشاء عمليات جديدة لكل طلب، حتى من نفس المستخدم.
بالمقارنة، يستخدم Nginx عملية واحدة للتعامل مع اتصالات متعددة في وقت واحد.
PHP طريقة التعامل
لأن كلا خادمي الويب هذين يعملان بشكل أساسي مع PHP، فإن طريقة تعاملهم مع الكود تعني إمكانات أداء كبيرة. لا ينفذ Nginx PHP بشكل افتراضي، يقوم بتمرير الطلب إلى PHP-FPM (مدير العمليات FastCGI)، والذي يتعامل مع الطلب ويرسل استجابة إلى Nginx، والذي يقوم بعد ذلك بتقديم المحتوى مرة أخرى إلى العميل.
نظرًا لأن Nginx لا ينتظر ردًا من PHP-FPM لخدمة طلب آخر (على نحو مماثل لكيفية عدم انتظار استجابة من العملاء عند تقديم محتوى ثابت)، يمكن لـ Nginx التعامل مع المزيد من الطلبات في وقت واحد من Apache سوف تكون قادرا على الإدارة.
Apache يستخدم وحدة تسمى mod_php لتنفيذ PHP الكود. في هذا النموذج، في كل مرة يأتي فيها طلب HTTP، Apache يُنشئ عملية أو سلسلة جديدة (حسب كيفية تكوينها) للتعامل مع هذا الطلب. هذه العملية مسؤولة أيضًا عن معالجة أي PHP الطلبات ضمن هذا الطلب.
هذا النموذج ناجح، لكن له بعض العيوب. أولًا، إنشاء عملية جديدة لكل طلب قد يكون مُرهقًا للنظام، خاصةً إذا كان هناك العديد من الطلبات المتزامنة. إنشاء عملية جديدة لكل PHP يعد الطلب داخل الطلب أكثر كثافة نظرًا لأن نظام التشغيل يجب أن ينتج مترجمًا جديدًا لكل طلب.
معيار الأداء
في باقة تقرير مفصل عن معايير الأداء من CyberPanel، تسلط العديد من الاختبارات الرئيسية الضوء على الاختلافات بين Nginx و Apacheشاهد الفيديو التالي لمعرفة عملية الاختبار الكاملة.
في الخلاصة:
- إنجن إكس:يتعامل مع ما يصل إلى ١٠٠٠٠ اتصال متزامن بمساحة ذاكرة منخفضة. في اختبارات الأداء، يُقدّم محتوى ثابتًا أسرع بمرتين ونصف من Apache.
- Apache:بالمقارنة، Apache فعال ولكنه أقل كفاءة من Nginx للمحتوى الثابت. بفضل بنيته القائمة على العمليات، Apacheقد يتدهور أداء 's في ظل التزامن العالي بسبب التكلفة الإضافية لإدارة العمليات المتعددة.
Nginx مقابل Apache لـ WordPress
في سياق WordPress من حيث الأداء، يعمل Nginx على تحسين أوقات التحميل بشكل كبير، وخاصةً للمحتوى الثابت، مما يجعله الخيار المفضل للمواقع ذات حركة المرور العالية WordPress المواقع. يسمح تصميمها القائم على الأحداث بمعالجة الاتصالات المتزامنة بكفاءة، مما يؤدي إلى أوقات استجابة أسرع وتقليل حمل الخادم.
Apacheمن ناحية أخرى، تقدم معالجة قوية للمحتوى الديناميكي باستخدام وحدات مثل mod_php، مما قد يبسط عملية النشر لـ WordPress المواقع التي تعتمد بشكل كبير على المحتوى الديناميكي. ومع ذلك، يوفر Nginx عمومًا أداءً وكفاءةً أفضل للموارد. WordPress البيئات التي تركز على تقديم المحتوى الثابت.
كيفية الاختيار بين Nginx و Apache
كما ترى، لا يوجد فائز واضح بين عملاقي خوادم الويب هذين. يعتمد الأمر بشكل أساسي على ما تحتاج إلى خادم الويب لإدارته.
اختار Apache إذا:
- الأنظمة القديمة والتوافق: Apache غالبًا ما يكون الخيار المفضل للأنظمة التي تستخدمه منذ فترة طويلة نظرًا لتواجده الراسخ في السوق. إذا كانت بنيتك التحتية تعتمد بشكل كبير على .htaccess ملفات لتكوين كل دليل، Apache أكثر ملاءمة لأنه يدعم هذه الملفات بشكل أصلي، مما يسمح بالتكوين اللامركزي والمرونة في بيئات الاستضافة المشتركة.
- معالجة المحتوى الديناميكي:إذا كانت تطبيقاتك تتطلب معالجة مكثفة للمحتوى الديناميكي، مثل PHP، نصوص Python أو Ruby، Apache قد يكون هذا النظام مفيدًا بفضل قدرته على تضمين المعالجات مباشرةً داخل وحداته. يُبسّط هذا الإعداد تنفيذ البرامج النصية الديناميكية مباشرةً داخل الخادم.
- سهولة الاستخدام والتوثيق: Apacheانتشاره الواسع يعني أنه يتمتع بكمية هائلة من التوثيق ودعم المجتمع. من الأسهل العثور على أدلة ودروس تعليمية ودعم Apache- القضايا ذات الصلة، مما يجعلها خيارًا أكثر سهولة في الاستخدام للمبتدئين أو أولئك الذين يفضلون قاعدة المعرفة الكبيرة.
استخدم Nginx إذا:
- الأداء العالي و Scalaبيليتيتم تحسين Nginx للتعامل مع عدد كبير من الاتصالات المتزامنة، مما يجعله مثاليًا لمواقع الويب أو التطبيقات عالية الحركة التي تتطلب قابلية التوسع. تسمح بنيته القائمة على الأحداث بمعالجة العديد من الاتصالات مع استخدام منخفض للذاكرة، مما يجعله فعالًا في توصيل المحتوى الثابت.
- موازنة التحميل والوكيل العكسييُستخدم Nginx غالبًا كوكيل عكسي وموازن أحمال، حيث يوزع حركة المرور الواردة عبر خوادم خلفية متعددة. تجعل هذه الميزة Nginx خيارًا ممتازًا للإعدادات والبيئات عالية التوافر التي تتطلب توزيعًا فعالًا للأحمال.
- تسليم المحتوى الثابت:إذا كان تطبيقك يقدم كمية كبيرة من المحتوى الثابت، مثل الصور أو CSS أو Javaملفات النصوص البرمجية، يتميز Nginx بسرعته وكفاءته في تقديم الملفات الثابتة مباشرةً. يسمح تصميمه بتسليم سريع للموارد الثابتة بأقل تكلفة.
- بساطة التكوين:في حين أن Nginx لا يدعم .htaccess ملفات التكوين، وقواعد تكوينها واضحة وسهلة الفهم. هذه البساطة قد تكون مفيدة لمن يرغبون في الحفاظ على إعدادات خادم نظيفة وبسيطة.
الاستخدام المشترك
بالنسبة للعديد من الإعدادات، استخدام كليهما Apache ويمكن لـ Nginx و Nginx معًا الاستفادة من نقاط القوة لكل منهما.
التكوين الشائع هو وضع Nginx كوكيل عكسي أمام Apache. يتيح هذا لـ Nginx التعامل مع المحتوى الثابت والاتصالات المتزامنة بكفاءة، بينما Apache يدير معالجة المحتوى الديناميكي. هذا النهج الهجين يُحسّن الأداء واستخدام الموارد في بيئات الويب المعقدة.
الخلاصة
سواء كنت تركض Apache أو Nginx، يعتمد ذلك على احتياجاتك والأجهزة التي تستخدمها. يمكنك استخدام أيٍّ من الخيارين لخدمة PHP ولكن هناك الكثير مما يجب مراعاته أكثر من ذلك.
إذا كان موقعك بسيطًا، فقد لا تلاحظ أي فرق. ولكن إذا زاد عدد زيارات موقعك وزاد نموه، فستحتاج إلى معرفة أداء كل خادم ومدى قدرته على التوسع تحت الحمل.