Apache و Nginx دو بازیگر اصلی در تجارت وب سرور هستند که 5 درصد از ترافیک وب را از طریق اینترنت پوشش میدهند، اما با یکدیگر متفاوت هستند.
معرفی Apache و Nginx
Apache، در واقع “HTTP Apache server” است. یک نرم افزار وب سرور open source و با کارایی بالا است که توسط بنیاد نرم افزار Apache توسعه و نگهداری میشود. Apache برای ایجاد یک وب سرور ایمن، قوی و کارآمد در سطح تجاری مطابق با استانداردهای HTTP فعلی طراحی شده است.
آپاچی به دلیل انعطاف پذیری، سادگی معماری، سازگاری قدرت و پشتیبانی چند پلتفرمی، اولین گزینه در بین مدیران سرور است. تقریباً میتواند روی تمام سیستم عاملها مانند Windows ، UNIX ، OSX ، NetWare و غیره اجرا شود. اما معمولاً در ترکیب با لینوکس استفاده میشود.
Apache ستون فقرات WWW (شبکه جهانی وب) شد، و در صدر بازی بود، اما زمانی که NGINX وارد تجارت شد، انتخاب مدیر سرور تغییر کرد.
میتوان گفت که NGINX نمیتواند در بسیاری از جبههها با آپاچی رقابت کند، اما وضعیت ناهمزمان (asynchronous) و معماری تک رشته ای (single-threaded)، آن را به انتخابی هوشمند نسبت به آپاچی تبدیل میکند.

مقایسه وب سرور Apache و Nginx
Apache
Apache بر روی تمام سیستم های یونیکس مانند لینوکس، BSD و غیره اجرا میشود و همچنین از ویندوز به طور کامل پشتیبانی میکند.
Apache از یک رویکرد چند رشتهای (multi-threaded) برای پردازش درخواستهای مشتری استفاده میکند.
آپاچی نمیتواند همزمان با ترافیک وب زیاد به چندین درخواست بپردازد.
Apache محتوای پویا را درون خود پردازش میکند.
Apache به عنوان یک وب سرور طراحی شده است.
ماژولها به صورت پویا بارگیری یا تخلیه میشوند و باعث انعطاف پذیری بیشتر آن میشود.
یک رشته واحد میتواند یک اتصال را پردازش کند.
عملکرد Apache برای محتوای استاتیک کمتر از Nginx است.
Nginx
Nginx بر روی سیستمهای مدرن مانند یونیکس اجرا میشود. با این حال پشتیبانی محدودی از ویندوز دارد.
Nginx از یک رویکرد رویداد محور (event-driven) برای ارائه درخواستهای مشتری پیروی میکند.
Nginx میتواند چندین درخواست مشتری را به طور همزمان و کارآمد با منابع سخت افزاری محدود مدیریت کند.
Nginx نمیتواند محتوای پویا را بومی پردازش کند.
Nginx هم وب سرور است و هم سرور پروکسی.
از آنجا که ماژولها نمیتوانند به صورت پویا بارگیری شوند، باید در خود نرم افزار اصلی کامپایل شوند.
یک رشته واحد میتواند چندین اتصال را اداره کند.
Nginx میتواند همزمان هزاران اتصال محتوای استاتیک را دو برابر سریعتر از Apache اجرا کند و از حافظه کمتر استفاده میکند.
تفاوت وب سرور Apache و NGINX
- Apache یک وب سرور Open Source ،HTTP است در حالی که Nginx یک وب سرور Open Source و با کارایی بالا و سرور پروکسی معکوس (reverse proxy) است.
- رفع اشکال، پشتیبانی، نگهداری و توسعه برنامه در سرور HTTP Apache توسط جامعهای از کاربران سراسر جهان مدیریت و نگهداری میشود و توسط بنیاد نرم افزار Apache هماهنگ میشود در حالی که Nginx توسط شرکتی به همین نام اداره میشود که در سال 2011 تاسیس شد.
- تفاوت عمده این دو در نحوه رسیدگی به درخواست مشتری است. Apache انواع مختلفی از ماژولهای چند پردازشی را برای رسیدگی به درخواستهای مشتری و ترافیک وب ارائه میدهد. Nginx به گونه ای طراحی شده است که چندین درخواست مشتری را همزمان با حداقل منابع سخت افزاری اداره کند.
- در Apache، یک رشته (thread) تنها با یک اتصال مرتبط است، در حالی که یک رشته در Nginx میتواند چندین اتصال را اداره کند. تمام فرآیندها به همراه دیگر اتصالات در یک حلقه رویداد قرار میگیرند و به صورت ناهمزمان مدیریت میشوند. این فرآیند حافظه کمتری مصرف میکند، در نتیجه عملکرد را افزایش میدهد.
- سرور HTTP Apache دارای معماری چند رشته ای است که فاقد مقیاس پذیری است. در حالی که Nginx از یک رویکرد رویداد ناهمزمان برای رسیدگی به چندین درخواست مشتری پیروی میکند. معماری رویداد محور آن برای تسهیل عملکرد بهتر حتی در ترافیک سنگین طراحی شده است.
- سرور آپاچی با استفاده از روشهای متداول به ارائه محتوای ایستا میپردازد و محتوای پویا را بطور داخلی در سرور وب پردازش میکند. از طرف دیگر، Nginx نمیتواند محتوای پویا را به صورت داخلی پردازش کند. برای اجرا به فرایندهای خارجی متکی است.
جهت مطالعه دیگر مقالات مرتبط صفحه آموزشگاه را مشاهده نمائید.
منبع: www.javatpoint.com