ما هو أفضل خادم ويب؟ (2021)
نشرت: 2021-12-30على الرغم من وجود العديد من الأنواع المختلفة لبرامج الخادم ، فغالبًا ما تقوم بتخفيض المتنافسين إلى Nginx vs Apache. هذا لأن كلاهما يقدم أداءً فائقًا للعديد من تكوينات الخادم المختلفة ، ويتناسب مع تطبيقات معينة بشكل أفضل من الآخر.
ومع ذلك ، ستظل ترغب في التفكير في أي من هذه الأشياء أكثر منطقية لاحتياجاتك. هناك عدد قليل من الفئات المختلفة التي يجب النظر فيها ، مثل دعم نظام التشغيل (OS) والأمان والتوثيق والأداء (بالطبع).
في هذا المنشور ، سنقارن Nginx و Apache في عدد من المجالات المختلفة. في النهاية ، سنلخص النتائج التي توصلنا إليها ونقدم لك المعلومات التي تحتاجها لاختيار الخيار الصحيح.
إدخال Nginx و Apache
قبل أن ندخل في التفاصيل الدقيقة لكل نوع خادم ، دعنا نمنحك ملخصًا لكل من Nginx و Apache. بمجرد أن ننتقل إلى القسم التالي ، ستتعرف على بعض حالات الاستخدام لكليهما ، وأين قد تراها "في البرية".
Nginx

بالمقارنة مع Apache ، يعد Nginx ( يُنطق "المحرك X" ) مبتدئًا نسبيًا في عالم التكنولوجيا من جانب الخادم. ومع ذلك ، تولى فريق التطوير مهمة توسيع حدود أنظمة Apache.
إنه حل مفتوح المصدر يفكر فيه الكثير من المستخدمين لاستقراره وقابليته للتوسع. يعود هذا (جزئيًا) إلى هندسته المعمارية التي تعتمد على الأحداث - والتي تم إجراء المزيد منها لاحقًا. في الواقع ، كان جزءًا من هدف إصدار Nginx الأولي هو القدرة على التعامل مع 10000 اتصال في وقت واحد. كان هذا أمرًا ضروريًا في عام 2004 ، بسبب شبكة الويب سريعة التوسع في ذلك الوقت.
بشكل عام ، فإن مسؤولي النظام ومالكي المواقع مثل Nginx لأنه فعال ، ويعمل بشكل رائع مع الملفات الثابتة ، ويؤدي وظائف موازن التحميل و "الوكيل العكسي". كل هذه الأمور ذات صلة بوقت التشغيل والسرعة والأمان.
اباتشي

أباتشي هو إلى حد ما "الرجل العجوز" لتكنولوجيا خادم الويب. إنه قديم قدم الويب نفسه تقريبًا - منذ عام 1995 كان Apache هو جوهر الآلاف ، إن لم يكن الملايين ، من الخوادم.
لفترة طويلة ، كانت أباتشي تقنية مهيمنة بين "مسؤولي النظام". هناك الكثير من الأسباب لهذا - بعضها متعلق بالأداء والبعض الآخر قوة العادة. بغض النظر ، ترى خوادم Apache الكثير من الاستخدامات حيث تكون التكوينات مهمة.
ستجد Apache كبرنامج مثبت مسبقًا على جميع توزيعات Linux ، لذلك فهو حل الانتقال لنظام التشغيل هذا. ومع ذلك ، في حين أنه يستخدم بنية مختلفة عن Nginx ، فإنه لا يزال يوفر القوة وقابلية التوسع والتوثيق الرائع.
يحب الكثير من مسؤولي النظام أيضًا طبيعة Apache القابلة للتخصيص ، وكيف يمكنك إنشاء خادم خاص بك من خلال تحميل وحدات نمطية مختلفة.
حالات الاستخدام العامة لـ Nginx مقابل Apache
من العدل أن نقول إن Apache هو "مقبس لجميع المهن" عندما يتعلق الأمر بخدمة مواقع الويب. ومع ذلك ، فهذه نعمة ونقمة. نعم ، يمكن لخوادم Apache فعل كل ما يمكن أن يفعله Nginx تقريبًا ، لكن ذلك على حساب كود أقل أداءً. العمر عامل هنا.
نظرًا لأن Apache وصل في وقت ما قبل أن يكون لدينا بعض التطبيقات الأكثر تقدمًا لخوادم الويب ، فإن قاعدة الشفرة لا يمكنها القيام بما تحتاجه لخدمة مواقع الويب الحديثة. في حين أن هذه المشكلات ليست بالضرورة مدعاة للقلق الآن ، فإن حلًا مثل Nginx يعمل مع الويب الحديث.
على هذا النحو ، ستجد أن Apache رائع كخادم سهل التكوين لتطبيقات مثل الاستضافة المشتركة. كما ترى عمليات تكاملها أنها تستخدم كبرنامج خادم تطوير محلي ، كجزء من مكدس Linux و Apache و MySQL و PHP (LAMP).

في المقابل ، تمتلك Nginx قاعدة برامج أكثر نضجًا ، مع تبسيط أكبر مقارنةً ببرنامج Apache. من الجيد أن يكون الاستقرار والأمن عنصرين أساسيين وأساسيين. ستجد أن خادم Nginx ليس قابلاً للتكوين مثل الأنواع الأخرى ، وهذا يعني أنك ستصل إلى جوهره بشكل أقل.
علاوة على ذلك ، فهي ليست معيارية بنفس طريقة Apache ، مما يجعلها أقل ملاءمة للموقف الذي تحتاج فيه إلى إجراء تخصيص الخادم.
Nginx vs Apache: مدى شعبية كل نوع خادم
لفترة طويلة ، كان برنامج الخادم أقرب إلى سباق الحصان الواحد. عملت أباتشي كقوة مهيمنة لعدد من السنوات وما زالت تمتلك حصة سوقية ضخمة. لهذا السبب ، ستجد أن هناك الكثير من عمليات الدمج والدعم لخوادم Apache ، جنبًا إلى جنب مع الوثائق رفيعة المستوى.
هذا بمثابة سبب إضافي لاختيار Apache ويساهم في استمرار استخدامه. ومع ذلك ، فإن Nginx هو برنامج خادم يتمتع بحصة سوقية ضخمة خاصة به. هناك ارتفاع بطيء في استخدام Nginx بمرور الوقت ، لدرجة أنه أصبح الآن أكثر تقنيات خوادم الويب انتشارًا في السوق ، وإن لم يكن كثيرًا.
بالنظر إلى المستقبل ، نقترح أن استخدام Apache أقل بمرور الوقت لأن Nginx يوفر الكثير مما يحتاجه مسؤولو النظام في خادم الويب. ومع ذلك ، فإن LiteSpeed Web Server و Cloudflare Server في الأفق ويأتيان مع قاعدة مستخدمين متزايدة ودعم كبير. في غضون سنوات قليلة ، يمكن لهذه المقارنة أن تقارن Nginx بواحدة من هؤلاء الشباب الناشئين.
Nginx vs Apache: تحليل تقني للميزات والوظائف
ستغطي الأقسام القليلة التالية عددًا من الجوانب الفنية في Nginx و Apache. بينما لا يمكننا تغطية كل شيء ، سنعطي المناطق الرئيسية متسعًا من الوقت. على أي حال ، نظرًا لأن هذه العناصر تمثل العناصر الأساسية لكلا النوعين من الخوادم ، فسيكون لديك أكثر من كافية للمتابعة عندما يتعلق الأمر باختيار البرنامج المناسب لك.
1. الاتصال وطلب التعامل
إن كيفية تعامل الخادم مع الاتصالات أمر حيوي يجب معرفته لأن هذه هي "عملته الأساسية". إنه قابل للنقاش ، ولكن عندما يبحث الناس عن المزايا النسبية لـ Nginx مقابل Apache ، يلعب التعامل مع الاتصال دورًا كبيرًا في التصورات.
Nginx
إن Nginx "غير متزامن" و "مدفوع بالحدث" ، مما يعني أنه يمكنه التعامل مع طلبات متعددة في وقت واحد ومعالجتها أثناء توفر الموارد. إنه يولد "عمليات عاملة" للتعامل مع الاتصالات الواردة ، والتي تتوقع الآلاف منها في كل مرة. هذه هي "ناقلات المياه" لبقية الخادم.
على سبيل المثال ، ستستمع كل عملية عاملة إلى أحداث واتصالات المعالجة ، وتضيفها إلى حلقة مستمرة. من هناك ، يمكن للخادم معالجة كل حدث وإزالته عند انتهائه. يوفر تدفق خادم Nginx قابلية توسعة متأصلة ، كما أن البنية غير المتزامنة وغير المحظورة تخدم ذلك أيضًا.
اباتشي
في المقابل ، يعالج Apache الأحداث واحدًا تلو الآخر من خلال عدد من وحدات المعالجة المتعددة (MPMs). سيختار مسؤول النظام بنية الاتصال الأنسب للمهمة ، والتي يوجد منها عدد قليل.
وحدة mpm_prefork
هي وحدة شائعة. ينتج عن هذا عمليات فرعية لكل حدث ، وسوف يعالج اتصالًا واحدًا فقط في كل مرة. إذا كان عدد العمليات أعلى من عدد الطلبات ، فستجد صعوبة في معرفة الفرق بين Nginx و Apache فيما يتعلق بالأداء.
ومع ذلك ، فإن هذا النوع من المواقف نادر ، وسيرى خادم Apache عددًا من الطلبات أكبر من العمليات في العديد من المناسبات. علاوة على ذلك ، فإن MPM هذه لا تتسع بشكل جيد ، بسبب استخدام الذاكرة.
بالنسبة لأولئك الذين يعملون مع PHP ، mpm_prefork
هي الطريقة الآمنة الوحيدة للعمل مع وحدة المترجم mod_php
. على الرغم من العيوب ، سيكون هذا هو MPM الذي سيختاره مطور WordPress إذا كان عليهم النشر إلى خادم Apache.

سترى أيضًا وحدات mpm_worker
و mpm_event
أيضًا. هذه تؤدي عملية مماثلة وحجمها بشكل أفضل نظرًا للطريقة التي يمكن بها إنتاج عمليات متعددة لكل مجموعة من الخيوط.
تُظهر هذه المجموعة من MPMs مدى مرونة Apache ، على الرغم من عيوب الأداء في بعض الحالات.
طلب التعامل مع المحتوى الثابت مقابل الديناميكي
قبل المضي قدمًا ، يجب أن نذكر المحتوى الثابت مقابل المحتوى الديناميكي لكل برنامج خادم. ستقرأ أن Nginx لا يمكنه معالجة المحتوى الديناميكي ، مما قد يثير قلقك. في الواقع ، لن يعالج Nginx هذا النوع من المحتوى بطريقة محلية. بدلاً من ذلك ، سيرسلها إلى معالج خارجي (مثل ذاكرة التخزين المؤقت) ، ثم تنتظر حتى تعود قبل أن تنقل المحتوى.
للتطوير ، سيقوم مسؤول النظام بإعداد حل مثل Memcached لهذا الغرض. هناك سلبيات لهذا النهج ، وهي على الأداء. ومع ذلك ، فإن الفوائد التي تعود على النفقات العامة للأداء لكل جزء من السلسلة تنفي ذلك. لا داعي لـ Nginx للقلق بشأن معالجة هذه الطلبات ، لذا يمكنها التركيز على مجالات مسؤوليتها بكفاءة أكبر.
يتيح نظام MPM الخاص بـ Apache معالجة المحتوى الثابت والديناميكي دون الحاجة إلى وحدات نمطية أخرى. بالنسبة للمحتوى الديناميكي ، يقوم Apache بتضمين معالج لغة في كل عامل. إنها طريقة بسيطة تعمل بشكل جيد. يمكنك أيضًا تبديل الوحدات النمطية إذا كنت بحاجة إلى إجراء تغيير.
2. تكوين الخادم
أحد الاختلافات الواضحة بين Nginx و Apache هو كيفية تكوين كل خادم. يستخدم Nginx نهجًا مركزيًا ، مما يعني أن المستخدم ليس لديه طريقة لتهيئة خادم خارج ملف رئيسي واحد. في حين أن هذا يبدو سلبيًا ، إلا أن هناك العديد من المزايا:
- مسؤول الخادم هو المسؤول عن الأمن العالمي ، والذي يشدد الوصول إلى الخادم ككل.
- يتمتع الخادم المركزي بأداء أفضل من الأنواع الأخرى. هذا لأن Nginx لن يحتاج إلى معالجة الطلبات للتحقق من ملفات التكوين في كل دليل.
- هناك تأثير إضافي هنا ، حيث لن يكون هناك أي تجاوزات للخادم من مناطق متعددة ، مما يؤدي إلى تقليل أوقات الطلبات.
تتمثل إحدى الطرق التي يعرف بها الشخص العادي أنه يستخدم خادم Apache في وجود ملفات .htaccess
. هذه هي ملفات التكوين التي يمكنك إضافتها في أي مكان تقريبًا على الخادم الخاص بك. سيتحقق Apache من كل عنصر في المسار بحثًا عن ملف .htaccess
عند تقديم طلب.

يعد هذا أمرًا رائعًا للمستخدمين الذين يرغبون في تخصيص جزء من الخادم الخاص بهم ولكن قد يتسبب في حدوث كارثة إذا تسببت إحدى التوجيهات في حدوث مشكلات في الأداء أو الأمان. هذا النهج اللامركزي هو أحد الأسباب التي سترى استخدام Apache في الاستضافة المشتركة. إنه أيضًا سبب يجعل نظام إدارة المحتوى (CMS) مثل WordPress يقدم أداءً جيدًا على خوادم Apache.
3. طلب تفسير
أحد الاختلافات الرئيسية بين Nginx و Apache والذي لا يبدو واضحًا هو كيفية تفسيره للطلبات. شيء صغير:
- يفسر Nginx ويخطط للطلبات باستخدام معرّف الموارد المنتظم (URI) لكل مكون.
- يمكن أن يستخدم Apache أيضًا URIs لتفسير الطلبات ، ولكن من الشائع رؤية بنية مسار تعتمد على الملفات.
نظرًا لأن Apache هو خادم ويب أولاً وقبل كل شيء ، فسيستخدم كتل <Directory>
أو <Files>
أو <Location>
لتحديد الموارد. المفهوم الأساسي هنا هو أن كل شيء "يراه" Apache مرتبط بخادم الويب ، لذلك لا يوجد غموض في مسار المورد. فكر في شجرة مستندات ، وهذه هي الطريقة التي "تصور" بها أباتشي نظام ملفات الخادم.

في المقابل ، يحتوي Nginx على الكثير من حالات الاستخدام ، مثل موازن التحميل وخادم وكيل وخادم ويب. لهذا السبب ، يجب أن تأتي الطلبات كمعرف URI لـ Nginx لمعالجتها. على سبيل المثال ، يستخدم Nginx كتل server
location
: يفسر الأول المضيف المطلوب ، ويتطابق الأخير مع أجزاء URI بعد ذلك. يصبح الطلب بأكمله URI.

بشكل عام ، يعتبر URI أكثر مرونة لـ Nginx ، لأنه يمكن أن يتكيف مع أي وظيفة يقوم بها. ومع ذلك ، يعمل نظام Apache ، نظرًا لأنه يجب عليه فقط أداء الدور كخادم ويب.
Nginx مقابل Apache: أيهما يجب أن تختاره لخادمك في عام 2021
الإجابة الشاملة على ما هو برنامج الخادم الذي يجب أن أختاره؟ بسيط: أيهما يقدمه مزود الاستضافة. في كثير من الحالات ، لن تحصل على خيار. نلاحظ أن الكثير من مضيفي الويب يتبعون نفس النمط الذي يجب أن تتطابق معه إذا كنت تريد الاختيار بين Nginx و Apache:
- إذا كنت ترغب في تشغيل خادم يحتاج إلى تكوين ثابت ، أو إذا كنت ترغب في منح المستخدمين خيار تكوين ، فإن Apache سوف يناسب الفاتورة.
- ومع ذلك ، إذا كنت ترغب في توفير أداء فائق وأمان قوي للغاية وتريد التعامل مع التكوينات بدلاً من المستخدمين ، فإن Nginx هو الطريق إلى الأمام.
عندما يتعلق الأمر بالأداء ، يمكن أن يستهلك Apache المزيد من الذاكرة بسبب بنيته المتأصلة. سيكون Nginx أفضل في المواقف التي يزداد فيها عدد الزيارات ، خاصة إذا كان عليه التعامل مع الكثير من المحتوى الثابت.
لذلك ، إذا كنت تعتمد على التخزين المؤقت لتخزين المحتوى وتقديمه ، فقد يكون Nginx هو الخيار الأفضل. ومع ذلك ، تذكر أن Nginx لا يمكنه تقديم محتوى ديناميكي ، لذلك ستحصل على قدر أكبر من الأداء اعتمادًا على كفاءة الخادم الوكيل الذي يستخدمه خادمك.
استنتاج
هناك الكثير من المجالات في WordPress (وتشغيل موقع ويب) التي تقدم عددًا هائلًا من الخيارات. هذه هي طبيعة الوحش. ومع ذلك ، فإنه لا يساعد عندما تحتاج إلى جعل موقعك يعمل بسرعة.
إن اختيارك لنوع الخادم هو أحد القرارات الحاسمة والواجهة التي سترغب في الاهتمام بها بشكل إضافي. تعد Nginx و Apache مقارنة شائعة لأن كلاهما يقدم فوائد في مواقف معينة.
رأينا أن Nginx يمكنه تغطية معظم القواعد بأداء أفضل ، مما يجعله الخيار الأفضل لمعظم مستخدمي WordPress. هذا هو السبب في أن العديد من مضيفي WordPress المشهورين الذين يركزون على الأداء قد تحركوا نحو مكدس خوادم Nginx بالكامل ، بما في ذلك Kinsta و Flywheel.
بغض النظر ، يمكنك استخدام كل ما يقدمه مضيفك بأمان إذا لم تحصل على هذا الخيار وستكون معظم مواقع WordPress جيدة تمامًا مع أي من خادمي الويب.
أين تجلس على السياج بين Nginx و Apache؟ واسمحوا لنا أن نعرف في قسم التعليقات أدناه!