Nginx و Apache جزو محبوب ترین وب سرور های دنیای وب هستند که در این مقاله با مقایسه تفاوت بین آپاچی و انجین اکس شما را در انتخاب گزینه بهتر یاری می کنیم، همراه داتیس نتورک باشید.
Nginx بهتر است یا Apache ؟
وب سرور آپاچی (Apache) گسترده ترین و محبوب ترین سرور HTTP در دسترس بر روی اینترنت می باشد که از زبان های PHP و Perl پشتیبانی می کند و روی بیشتر سیستم عامل های قابل اجرا است یک برنامه free Open Source است که با سرور های وب برای اداره کردن درخواستها و تقاضاهای وب و منابع به کار می رود .
Nginx یا انجین اکس یک وب سرور متن باز Open Source است که در سال 2004 توسط یک مهندس روسی عرضه شد. از همان ابتدا تمرکز اصلی Nginx روی بهرهوری بالا، همزمانی بالا و همچنین استفاده کمتر از حافظه تمرکز بود.
وب سرور Nginx قابلیت های بیشتری نظیر توازن در بارگذاری، حافظه نهان، کنترل دسترسی و پهنای باند و قابلیت یکپارچهسازی موثر با برنامههای کاربردی فراوان را در خود جای داده که همین ویژگی ها Nginx را تبدیل به دومین وب سرور مجبوب جهان کرد.
بسیاری از متخصصین حوزه هاستینگ و میزبانی وب Nginx را سریع ترین وب سرور حال حاضر می دانند و با توجه به متن باز و رایگان بودن آن می توان آینده بسیار موفقی برای Nginx تصور کرد .
چرا مهم است که وب سرور خود را با دقت انتخاب کنید؟
Apache و NGINX مسئولیت ارائه بیش از 50٪ از ترافیک در اینترنت را بر عهده دارند.
این امر آن ها را به دو سرور متداول وب منبع باز در جهان تبدیل می کند.
درست مانند انتخاب میزبان وب، می توانید تصمیم بگیرید که کدام سرور را برای سایت خود انتخاب کنید.
تصمیم گیری صحیح مهم است.
هر دو راه حل قابلیت تحمل بار کاری متنوع را دارند، اما هر کدام کمی متفاوت عمل می کنند.
هیچ سرور کاملی وجود ندارد.
اینکه کدام فناوری را که انتخاب می کنید به اهداف و نیازهای شما بستگی دارد.
انتخاب سرور مناسب می تواند تأثیر مثبتی بر عملکرد و سرعت سایت شما داشته باشد.
مقایسه تفاوت بین وب سرور Nginx و Apache
در ادامه این مقاله به مقایسه تفاوت بین وب سرور آپاچی و انجین اکس خواهیم پرداخت.
امنیت
هر دو این وبسرور امنیت قابل تعمیمی را برای کدهای مبتنی بر C دارا میباشند.
[Apache]
آپاچی این اطمینان را میدهد که تمامی وبسایتهایی که بر روی این وبسرور قرار دارند نسبت به هکرها و خسارات در امان باشند و نکات مهمی را برای پیکربندی وبسرور برای حملات دیداس پیشنهاد میدهد، همانطور که ماژول mod_evasive برای پاسخ به HTTP DoS، DDoS یا حملات بروت فورس پیشنهاد شدهاست.
[Nginx]
پایه کد Nginx به طور قابل ملاحظهای کوچکتر است و لیستی از پیشنهادات امنیتی جدید را دارا است.
سبک معماری پایه Nginx و Apache
همانطور که پیش از این گفته شد تفاوت اساسی آپاچی و Nginx در طراحی معماری آنها است.
در واقع در روش مدیریت ارتباطات و ترافیک و پاسخ به شرایط ترافیکی مختلف تفاوت دارند.
یکی از آنها بر رویکرد فرآیند-محور (process-driven) دلالت داشته و دیگری بر معماری رویداد-محور (event-driven).
[Apache]
- رویکرد فرآیند محور
- ایجاد رشته جدید برای هر درخواست
آپاچی از رویکرد چند-رشتهای (Multi-Thread) پیروی مینماید و ماژولهای چندگانه پردازشی گوناگونی را ارائه میدهد.
این pre-module ها ۳ نوع از الگوریتمهای مدیریت درخواست بوده که هرکدام برای احتیاجات سرور میباشند.
ماژولهای چند-فرآیندی (MPMs)، (Multi-Processing Modules)، معماری منعطقی را برای انتخاب ارتباط متفاوت و الگوریتمهای مدیریت مختلف ایجاد مینماید.
همچنین نسخههای گوناگون آپاچی ۲ ماژولهای پردازشی مختلفی را به کار میگیرد.
3 نوع Apache MPMs اصلی:
- Process (Pre-fork) MPM
- Worker MPM
- Event MPM
آپاچی ۲.۲ ازmpm_worker ، mpm_preforkو mod_php استفاده میکرد، درحالی که Apache 2.4 جهت استفاده از mpm_event و php-fpm پیکربندی شده است.
به صورت پیشفرض آپاچی ۲٫۲ در Pre-fork mode (mpm_prefork) پیکربندی شدهاست و به تعدادی از پردازشها که هر کدام میتوانند یک تک درخواست را در لحظه سرویسدهی کنند پاسخ میدهد.
به عبارت دیگر، آپاچی هر لحظه یک thread را جهت مدیریت هر درخواست ارتباط، ایجاد مینماید.
Thread یا رشته چیست؟
کوچکترین دنباله از دستورالعمل برنامهریزی شدهاست که میتواند به صورت مستقل توسط schedule مدیریت شود. در اکثر اوقات نیز جزئی از فرآیند است.
یا به عبارتی فرآیندهای کوچکی هستند که هر کدام تنها یک هدف را انجام میدهند و در نهایت پس از پایان یافتن اجرای مجموعه رشتهها یک برنامه یا یک فرآیند اصلی پایان پیدا میکند.
از رشته برای انجام کارهای موازی و همزمان استفاده میشود. اکثر برنامههایی که نوشته میشود فقط یک رشته دارند که همان فرآیند اصلیست و با پایانیافتن آن، برنامه نیز به پایان میرسد.
معماری اولیه آپاچی منجر به مصرف زیاد منابع میگردد، در نتیجه میتواند مشکلاتی مانند کاهش سرعت را برای سرور ایجاد نماید.
[Nginx]
- رویکرد رویداد محور
- مدیریت درخواستهای چندگانه در یک رشته
همانطور که قبلا گفته شد Nginx معماری رویداد محور را به کار گرفتهاست و با درخواستهای همزمان سروکار دارد و برای استفاده از الگوریتم هندلینگ ارتباط رویداد-محور non-blocking طراحی شدهاست.
بنابراین فرآیند آن میتواند هزاران درخواست ارتباط در یک رشته پردازشی را مدیریت کند.
به طور مثال ماژولهای فرآیند ارتباطات این اجازه را به Nginx میدهند تا بسیار سریع و با منابع محدود کار کند.
علاوه براین میتوان از Nginx در سیستمهای کم قدرت و با سیستمهایی که تحت بار سنگین کار میکنند، استفاده نمود.
درنتیجه Nginx ساختار سبکتری داشته و معماری سریعتری نسبت به آپاچی دارد.
پیکربندی (Nginx Apache Configuration)
در این بخش بررسی میکنیم که پیکربندی کدام نوع وبسرور سریعتر و راحتتر است.
[Apache]
این امکان را فراهم میسازد تا توسط فایلهای .htaccess پیکربندی اضافی بر روی هر دایرکتوری انجام گردد.
این معماری به کاربران غیر اصلی این اجازه را میدهد تا جنبههای خاص وبسایت را بدون اعطای دسترسی ادیت config اصلی، کنترل نمایند.
[Nginx]
امکان پیکربندی اضافه را نداده و باعث افزایش عملکرد میشود و به درخواستها سریعتر پاسخ میدهد.
زیرا نیاز نیست به دنبال فایلهای htaccess بگردد.
درنتیجه در این مورد از آپاچی سریعتر است.
عملکرد
هر دو وبسرور به صورت متفاوت محتوای داینامیک و استاتیک را پردازش مینمایند.
اما گاها مشاهده شدهاست که Nginx در پردازش محتواهای استاتیک بهتر عمل مینماید.
محتوای استاتیک
از روش مبتنی بر فایل برای سرویس دهی به محتوای استاتیک استفاده مینماید.
پشتیبانی Nginx و Apache از سیستمعامل
پشتیبانی از سیستمعامل مورد بسیار مهمی است که هر دو وبسرور مشابه میباشند.
[Apache]
از سیستمهای Unix که شامل Linux و BSD است پشتیبانی مینماید.
از MS-windows پشتیبانی مینماید.
آپاچی بر روی تمامی سیستمهای Unix (لینوکس یا BSD) اجرا میشود و پشتیانی کاملی نیز برای ماکروسافت ویندوز دارد.
[Nginx]
تقریبا از تمامی سیستمعاملهای Unix پشتیانی مینماید.
تا اندازهای قابلیت پشتیبانی از ویندوز را نیز دارا است اما عملکرد آن بر روی ویندوز به اندازه قدرت سایر پلتفرمها نمیباشد. در نتیجه در این مورد آپاچی بهتر عمل مینماید.
تفاوت Nginx و Apache از نظر پشتیبانی
[Apache]
پشتیبانی ویژگیای است که هر مشتری علاقهمند به داشتن و استفاده از آن میباشد.
همچنین تفاوت خاصی میان پشتیبانی آپاچی و Nginx وجود ندارد.
پشتیبانی آن از طریق mailing list , IRC و stack overflow انجام میگزدد.
پشتیبانی آپاچی از طریق شرکتهای سوم شخص نظیر OpenLogic در دسترس میباشد اما لیست پشتیبانی رسمی توسط آپاچی ارائه نشدهاست.
[Nginx]
پشتیبانی آن از طریق mailing list , IRC و stack overflow و فرومها انجام میگردد.
شرکت Nginx محصول تبلیغاتی با نام Nginx Plus را که دارای مجموعهای از ویژگیهای اضافه پشتیبانی مرتبط با load balancing, media streaming و monitoring است ، پیشنهاد میدهد.
در نتیجه پشتیبانی هر دو وبسرور یکسان بوده و هیچ کدام برتری نسبت به دیگری ندارد.
امیدواریم مقاله آشنایی با تفاوت های انجین اکس و آپاچی مفید بوده باشد.
داتیس نتورک را در شبکه های اجتماعی دنبال کنید.