نماد سایت بلاگ ایران هاست

از مقایسه Nginx و Apache چه میدانید

وب سرور ها بخش جدایی ناپذیر تمامی سرورها برای ارائه مطالب مبتنی بر وب روی اینترنت هستند. وب سرورهای متعددی در بازار ارائه شده اند ولی از مهم ترین آنها می توان به Apache و Nginx اشاره کرد. انتخاب بین این دو وب سرور گاها باعث سردرگمی برخی کاربران می شود به همین دلیل در این مقاله به مقایسه Nginx و Apache پرداخته ایم.

فهرست این مقاله ( با کلیک روی هر عنوان به آن قسمت منتقل می شوید) پنهان

با مقایسه نرم افزارهای وب سرور شاید بتوان به راحتی نرم افزار مناسب خود را یافت و از آن بهره مند شد. البته باید در نظر داشت این دو وب سرور نمی توانند جایگزینی برای یکدیگر به حساب بیایند زیرا هر کدام از آنها خصوصیات و کاربردهای خاص خود را دارند. در نتیجه برای انتخاب بین این دو وب سرور باید نیازهای خود را بررسی کنیم. در این مقاله به تفاوت های بین این دو وب سرور خواهیم پرداخت.

پیش از آنکه بخواهیم به مقایسه nginx و apache بپردازیم بهتر است تعریفی کوتاه از این دو برای آشنایی بیشتر داشته باشیم

معرفی آپاچی و انجین ایکس

آپاچی

آپاچی برای اولین بار در سال ۱۹۹۵ توسط Robert McCool طراحی شد. بعد از آن و تا به امروز این نرم افزار توسط “بنیاد نرم افزار آپاچی” مدیریت شده و توسعه داده می شود.

به دلیل قدرت زیاد و همخوانی آن با بسیاری از پلتفرم ها Apache انتخاب اول بسیاری از مدیران سرور است. برای این منظور می توانید آموزش تنظیمات آپاچی در لینوکس را ماطلعه بفرمایید

همچنین آپاچی را می توان از طریق بارگذاری ماژول پویای آن به راحتی گسترش داد. آپاچی امکان پردازش بسیاری از زبان های تفسیر شده را دارد و برای اینکار نیازی به نرم افزارهای ثانویه نیست. برای کسب اطلاعات در حوزه وب سرور آپاچی چیست به شما پیشنهاد می شود مقاله ما را مطالعه نمایید.

Nginx

در nginx شرح باید گفت توسط Igor Sysoev به عنوان راه حلی برای مشکل c10K طراحی و ارائه شد. مشکل C10K به مشکلی اشاره می کند که در آن تعداد کانکشن های هم زمان به سرور به ۱۰۰۰۰ می رسد و وب سرور در ارائه ی خدمات به مشکل برخورد می کند. در چنین مواردی حتی آپاچی که وب سرور قدرتمندی بود توان پاسخگویی به این حجم ترافیک را نداشت.

انجین‌اکس به عنوان راه حل این مشکل برای سرویس دهی به تعداد بسیار بالایی از درخواست های همزمان حتی با منابع محدود معرفی شد. بعد از رونمایی اولیه این وب سرور هر روز به شهرت بیشتری رسید. مدیران سرورهایی که سایت های تحت مدیریت آنها با تعداد بازدید های بسیار بالایی رو به رو بودند شروع به مهاجرت به Nginx کردند.

Nginx با استفاده از ویژگی های پیشرفته آن حتی زیر بار بسیار زیاد نیز به خوبی فعالیت میکرد. به دو ویژگی مهم Nginx در ادامه اشاره شده است.

پیشنهاد می شود، برای دریافت اطلاعات بیشتر درباره Nginx چیست و نحوه نصب و راه اندازی آن به مقاله نوشته شده مراجعه نمایید.

در ادامه به مقایسه  Nginx و Apache اشاره خواهیم کرد:

معیار های مقایسه Nginx و Apache

مقایسه Nginx و Apache با توجه به معیارهای زیر انجام می شود:

 

مقایسه Nginx و Apache از نظر معماری مدیریت ارتباطات

Apache

در بحث مقایسه Nginx و Apache از نظر معماری مدیریت ارتباطات باید گفت آپاچی ماژول های چند-فرآیندی متفاوتی را ارائه می دهد. مدیر سرور می تواند این ماژول ها را به راحتی از طریق MPM تغییر دهد.

MPM_Prefork :  این ماژول هر یک از پردازش ها را با یک رشته ی پردازش جداگانه ایجاد می کند. هر یک از رشته ها تنها یک درخواست را پاسخ می دهد. ایجاد هر یک از پردازش ها نیاز به مقداری حافظه ی اصلی دارد، در نتیجه تعداد پردازش های ممکن محدود است و بالا رفتن تعداد پردازش ها باعث کندی سرور می شود. این ماژول تا زمانی که تعداد درخواست ها بیشتر از تعداد پردازش های ممکن نشده باشد سریعتر عمل میکند. این ماژول بهترین انتخاب برای کار با PHP با استفاده از mod-php است.

MPM_worker:  این ماژول پردازش ها را با چندین رشته ایجاد میکند. زمانی که چندین رشته وجود داشته باشد امکان ایجاد چندین کانکشن نیز وجود خواهد داشت. این ماژول بهینه تر از mpm_prefork عمل می کند. در این ماژول نیازی به ایجاد یک رشته ی جدید برای هر درخواست نیست و درخواست های جدید توسط رشته های موجود دریافت می شود در نتیجه نیازی به صبر کردن برای آزاد شدن پردازش ها نخواهد بود.

MPM_Event:  این ماژول از خیلی ابعاد شبیه به mpm_worker عمل میکند. در این ماژول چه درخواستی وجود داشته باشد یا خیر اتصال باز می ماند. این ماژول وظیفه ی رسیدگی به باز ماندن اتصالات را نیز بر عهده دارد. ماژول رشته هایی را به باز نگهداشتن اتصالات تخصیص می دهد و باقی درخواست ها را به رشته های دیگر منتقل می کند. این کار باعث می شود پردازش ها برای باز نگه داشتن اتصالات هزینه نشوند.

Nginx

Nginx با هدف ارائه ی سرویس به درخواست هایی با تعداد بسیار بالا و با مصرف منابع پایین طراحی شده است. به دلیل ناتوانی آپاچی در ارائه ی سرویس در زمانی که تعداد درخواست ها بالا می باشد Nginx ارائه شد و بازدهی خوبی داشت. در سرورهایی که تعداد درخواست های بالایی دریافت می کنند عموما Nginx بهتر از آپاچی یا وب سرورهای دیگر عمل می کند.

Nginx در ارائه ی داده های غیر پویا بسیار سریع بوده و بازدهی آن تقریبا دو برابر سریع تر از آپاچی است. نحوه ی کار Nginx به طور کلی با آپاچی تفاوت می کند. در Nginx یک پردازش مرکزی یا Master process وجود دارد. عموما پیشنهاد می شود برای هر هسته ی CPU یک Master process تعریف شود. این پراسس مرکزی چندین پردازش کاری ایجاد می کند. هر پردازش کاری تنها یک رشته ایجاد می کند. تفاوت اصلی Nginx و آپاچی در نوع پردازش و ایجاد رشته ها است که توضیح داده شد.

در Nginx یک رشته می تواند به چندین اتصال پاسخ دهد، در صورتی که در آپاچی هر رشته تنها به یک اتصال پاسخ می دهد. از آنجایی که یک رشته ی ایجاد شده می تواند به تعداد زیادی درخواست پاسخ دهد، نیازی به ایجاد رشته های جدید نیست و در نتیجه از حافظه ی کمی استفاده می شود.

مقایسه Nginx و Apache از نظر محتوای پویا و ایستا

محتوای ایستا:

در این زمینه Nginx با ۲.۵ برابر سرعت بیشتر در پردازش محتوای ایستا با ۱۰۰۰ اتصال همزمان نسبت به آپاچی پیشتاز است. در یک آزمایش دیگر با ۵۱۲ اتصال همزمان Nginx دو برابر سریع تر از آپاچی عمل کرده و ۴ درصد حافظه ی کمتری مصرف می کند. پس در صورتی که سرویس شما مقدار زیادی اطلاعات ایستا ارائه می دهد بهینه است از Nginx به عنوان وب سرور خود استفاده کنید.

در آزمایشی که برای آزمایش کارایی Nginx و آپاچی در ارائه ی سرویس به CMS ها (در اینجا از وردپرس استفاده شده است) انجام شد، هر دو وب سرورها تقریبا بازدهی یکسانی دارند.

محتوای پویا:

با نظر به اینکه اکثر وبسایت های فعالی و سرویس های آنلاین از محتوای پویا برای ارائه ی سرویس به کاربران استفاده می کنند، سرعت ارائه ی اطلاعات پویا توسط وب سرور از اهمیت ویژه ای برخوردار است.

در آزمایش های انجام شده بر روی دو وب سرور nginx و آپاچی هر دو با سرعت یکسانی اطلاعات پویا را ارائه می کنند. همچنین مقدار مصرف حافظه و قدرت پردازش نیز در هر دو وب سرور یکسان است. در استفاده از CMS ها نیز (وردپرس، جوملا، دروپال و…) هر دو وب سرور توانایی یکسانی در ارائه ی سرویس دارند.

برای کسب اطلاعات بیشتر درباره سیستم مدیریت محتوا drupal چیست پیشنهاد می شود مقاله ما را مطالعه نمایید.

در هنگام ارائه ی محتوای پویا، آپاچی به شکل مستقیم با PHP کار میکند ولی Nginx با استفاده از PHP-fpm این کار را انجام می دهد.
با توجه به این معیارها و آزمایشات صورت گرفته، تفاوت زیادی از نظر انتخاب بین این دو وب سرور برای ارائه ی محتوای پویا وجود ندارد.

مقایسه Nginx و Apache از نظر سیستم عامل

آپاچی:

آپاچی از سیستم عامل های مبتنی بر لینوکس و همچنین Unix به خوبی پشتیبانی می کند. همچنین مشکلی با پشتیبانی از وب سرورهای مبتنی بر ویندوز سرور ندارد.

Nginx:

Nginx به خوبی از سیستم عامل های مبتنی بر لینوکس و Unix پشتیبانی می کند ولی بر روی سرورهای مبتنی بر ویندوز به شکل محدود اجرا می شود. با اینحال امکان ارائه ی محتوای پویا و ایستا را بر روی ویندوز نیز دارد. در نظر داشته باشید در حال حاضر اکثر وب سرورها مبتنی بر لینوکس هستند.

سوالات متداول

معیار های مقایسه Nginx و Apache 

مقایسه Nginx و Apache با توجه به معیارهای زیر انجام می شود:

مقایسه Nginx و Apache از نظر معماری مدیریت ارتباطات

آپاچی ماژول های چند-فرآیندی متفاوتی را ارائه می دهد. مدیر سرور می تواند این ماژول ها را به راحتی از طریق MPM تغییر دهد. این مازول ها عبارتند از: MPM_Prefork ، MPM_worker ، MPM_Event

Nginx با هدف ارائه ی سرویس به درخواست هایی با تعداد بسیار بالا و با مصرف منابع پایین طراحی شده است. به دلیل ناتوانی آپاچی در ارائه ی سرویس در زمانی که تعداد درخواست ها بالا می باشد Nginx ارائه شد و بازدهی خوبی داشت. در سرورهایی که تعداد درخواست های بالایی دریافت می کنند عموما Nginx بهتر از آپاچی یا وب سرورهای دیگر عمل می کند.

مقایسه Nginx و Apache از نظر محتوای پویا و ایستا

در این زمینه Nginx با ۲.۵ برابر سرعت بیشتر در پردازش محتوای ایستا با ۱۰۰۰ اتصال همزمان نسبت به آپاچی پیشتاز است. در آزمایش های انجام شده بر روی دو وب سرور nginx و آپاچی هر دو با سرعت یکسانی اطلاعات پویا را ارائه می کنند.

در هنگام ارائه ی محتوای پویا، آپاچی به شکل مستقیم با PHP کار میکند ولی Nginx با استفاده از PHP-fpm این کار را انجام می دهد.
با توجه به این معیارها و آزمایشات صورت گرفته، تفاوت زیادی از نظر انتخاب بین این دو وب سرور برای ارائه ی محتوای پویا وجود ندارد.

مقایسه Nginx و Apache از نظر سیستم عامل

آپاچی از سیستم عامل های مبتنی بر لینوکس و همچنین Unix به خوبی پشتیبانی می کند. همچنین مشکلی با پشتیبانی از وب سرورهای مبتنی بر ویندوز سرور ندارد. Nginx به خوبی از سیستم عامل های مبتنی بر لینوکس و Unix پشتیبانی می کند ولی بر روی سرورهای مبتنی بر ویندوز به شکل محدود اجرا می شود.

خروج از نسخه موبایل