وب سرور نرم افزار رایانه ای است که محتوای وب را ارائه می دهد. همچنین ارتباطی بین سرور کامپیوتر و مرورگر وب کاربر ایجاد می کند و فایل ها را به عقب و جلو انتقال می دهد. انتخاب وب سرور مناسب هنگام ایجاد یک وب سایت یا راه اندازی یک پروژه VPS بسیار مهم است، زیرا می تواند به طور قابل توجهی بر عملکرد و امنیت یک سایت تأثیر بگذارد. اگر نمی دانید از کدام وب سرور استفاده کنید، آپاچی و NGINX را در نظر بگیرید. این دو وب سرور محبوب ترین هستند و بیش از نیمی از ترافیک اینترنت را بر عهده دارند. برای کمک به شما در انتخاب وب سرور مناسب، مقایسه مفصلی از NGINX و Apache را به شما نشان خواهیم داد.
بررسی اجمالی NGINX و Apache
قبل از شروع مقایسه Apache و NGINX، اجازه دهید تفاوت بین وب سرورها و ویژگی های کلی آنها را بررسی کنیم.
Apache
Apache HTTP Server – که معمولاً به عنوان Apache یا Apache HTTPD شناخته می شود – یک نرم افزار وب سرور رایگان و منبع باز است. درخواست های کاربر را پردازش می کند و محتوای وب را از طریق پروتکل انتقال ابرمتن (HTTP) ارائه می دهد. وب سرور آپاچی در سال 1995 راه اندازی شد و از آن زمان توسط بنیاد نرم افزار آپاچی نگهداری می شود. همچنین در روزهای اولیه وب جهانی وب سرور غالب وب بود. سرور HTTP آپاچی در حال حاضر حدود 33.9 درصد از وب سایت ها را در سراسر جهان تامین می کند و از نظر سهم بازار در رتبه اول قرار دارد و یکی از قدیمی ترین وب سرورها است. وب سرور آپاچی با بسیاری از سیستم عامل ها (OS) مانند مایکروسافت ویندوز، OpenVMS و هر سیستم عامل مشابه یونیکس مانند لینوکس و macOS سازگار است.
علاوه بر این، وب سرور آپاچی نیز بخشی از پشته LAMP، یکی از اولین پشته های نرم افزار رایگان برای توسعه وب است. بنابراین، وب سرور با بسیاری از سیستم های مدیریت محتوا (CMS)، زبان های برنامه نویسی و چارچوب های وب نیز به خوبی کار می کند. آپاچی به دلیل قدرت و انعطاف پذیری که سیستم ماژول آن به آن می دهد محبوبیت خاصی دارد. با استفاده از ماژول های آپاچی، کاربران می توانند به راحتی توابع را اضافه یا حذف کنند، بنابراین سرور خود را بر اساس نیاز خود تغییر دهند.
NGINX
NGINX – که به عنوان “Engine X” تلفظ می شود – یکی از قابل اعتمادترین سرورها از نظر مقیاس پذیری و سرعت است. همچنین یکی از سریعترین سرورهای وب در صنعت در حال رشد است، زیرا از نظر سهم بازار به مقام دوم رسیده است. مانند آپاچی، NGINX نیز یک نرم افزار متن باز )اوپن سورس) و رایگان است. Igor Sysoev، خالق NGINX، توسعه این نرم افزار را در سال 2002 برای رفع مشکل C10K آغاز کرد. در آن زمان، بسیاری از سرورهای وب قادر به مدیریت بیش از 10000 اتصال به طور همزمان نبودند. وب سرور NGINX با ساختار ناهمزمان و رویداد محور منتشر شد، که امکان پردازش همزمان بسیاری از درخواست ها را فراهم می کند. NGINX به دلیل توانایی آن در رشد و افزایش ترافیک، در حالی که مقیاسپذیری آن بر روی حداقل سختافزار آسان است، بسیار محبوب است. به علاوه، برای ارائه سریع فایل های استاتیک بسیار عالی است.
NGINX علاوه بر استفاده به عنوان وب سرور، می تواند به عنوان یک متعادل کننده بار نیز برای بهبود کارایی و در دسترس بودن منابع سرور عمل کند. علاوه بر این، می تواند به عنوان یک پروکسی معکوس کار کند و جریان ترافیک روان بین سرورها و کاربر را تضمین کند. NGINX تقریباً از تمام سیستم عامل های مشابه یونیکس پشتیبانی می کند. با این حال، نصب NGINX در ویندوز میتواند باعث ایجاد برخی محدودیتهای عملکرد، مانند عدم مقیاسپذیری و مشکلات احراز هویت UDP شود. اکنون که اصول اولیه Apache و NGINX را بررسی کردیم، وقت آن است که آنها را با استفاده از چندین جنبه مهم مهم برای وب سرورها مقایسه کنیم.
طراحی پایه و مدیریت اتصال NGINX و Apache
طراحی وب سرور، چیدمان یا مکانیزم منطقی است که تعیین می کند وب سرور چگونه درخواست ها، اتصالات و ترافیک وب را مدیریت می کند. این یکی از معیارهای ضروری برای انتخاب وب سرور است. بیایید NGINX و Apache را از نظر طراحی پایه و نحوه مدیریت اتصالات این دو نرم افزار مقایسه کنیم.
Apache
آپاچی به طور پیش فرض ازطراحی فرآیند گرا پیروی می کند، به این معنی که یک رشته واحد برای رسیدگی به هر درخواست اتصال ایجاد می کند. نقطه ضعف طراحی فرآیند گرا این است که آپاچی باید هنگام رسیدگی به تعداد زیادی درخواست، فرآیندهای زیادی ایجاد کند. این می تواند منجر به مصرف بالای منابع شود و باعث مشکلات سرور مانند بارگذاری کند صفحات وب و خرابی سایت شود. خوشبختانه، آپاچی ماژولهای چند پردازشی (MPM) مختلفی را ارائه میکند که تعیین میکنند چگونه این وبسرور منبع باز درخواستهای HTTP را میپذیرد و پردازش میکند، و کاربران در انتخاب MPM آزاد هستند که با نیازهایشان مطابقت دارد. سه MPM اصلی وجود دارد:
- mpm_prefork – Prefork MPM بدون رشته است، به این معنی که هر پردازش فرزند می تواند تنها یک درخواست را در یک زمان انجام دهد. با این حال، به محض اینکه درخواستها از تعداد فرآیندها فراتر رود، عملکرد آن کاهش مییابد، که مقیاسسازی کارآمد این MPM را دشوار میکند.
- mpm_worker – هر فرآیند MPM worker می تواند چندین رشته ایجاد کند و هر رشته همچنین می تواند یک اتصال را مدیریت کند. این به سیستم اجازه می دهد تا به چندین درخواست به طور همزمان پاسخ دهد. همچنین، از آنجایی که thread ها به منابع کمتری نسبت به فرآیندها نیاز دارند، این MPM می تواند مقیاس بهتری داشته باشد و منابع کمتری را نسبت به Prefork MPM مصرف کند.
- mpm_event – Event MPM مشابه Worker MPM است، اما برای مدیریت اتصالات زنده نیز بهینه شده است. این کار با کنار گذاشتن رشتههای اختصاص داده شده به مدیریت اتصالات زنده و تخصیص درخواستهای فعال به رشتههای دیگر کار میکند. این فرآیند به رویداد MPM اجازه میدهد تا با تمام درخواستهای نگهداشتن زنده خنثی نشود. بنابراین، وب سرور آپاچی هنگام استفاده با این MPM کمترین منابع مورد نیاز را دارد.
به خاطر داشته باشید که هر بار فقط می توانید یک MPM را در سرور خود بارگذاری کنید. اگر پروژه شما به ثبات و سازگاری نیاز دارد، از Prefork MPM استفاده کنید. از سوی دیگر، برای وبسایتهایی که به مقیاسپذیری و تنوع بیشتری نیاز دارند، استفاده از worker یا event MPM را در نظر بگیرید.
NGINX
در حالی که بسیاری از وب سرورها از یک معماری مبتنی بر رشته یا فرآیند ساده استفاده می کنند، NGINX با استفاده از معماری مبتنی بر رویداد ناهمزمان و غیر مسدود کننده رویکرد متفاوتی دارد. این به وب سرور اجازه می دهد تا چندین اتصال را در یک فرآیند مدیریت کند. NGINX دارای یک فرآیند اصلی است که عملیات ممتازی مانند اتصال به پورت ها، خواندن و ارزیابی فایل های پیکربندی و ایجاد چندین پردازش فرزند را انجام می دهد. در اینجا سه نوع پردازش فرزند NGINX وجود دارد:
- فرآیند بارگیری حافظه پنهان – می تواند – کش روی دیسک – را در ناحیه حافظه بارگیری کند. این فرآیند از نظر منابع کارآمد است زیرا فقط یک بار و درست پس از شروع NGINX اجرا می شود.
- فرآیند مدیریت حافظه نهان – هدف آن حفظ مقدار دادههای ذخیرهشده در اندازههای پیکربندی شده با بررسی دورهای حافظه پنهان و حذف دادههایی است که اخیراً به آنها دسترسی نداشتهاند.
- فرآیندهای کارگر – می توانند صدها هزار اتصال HTTP را به طور همزمان مدیریت کنند، به این معنی که نیازی به ایجاد فرآیندها یا رشته های جدید برای هر اتصال نیست. در عوض، هر فرآیند کارگر به طور مستقل اجرا می شود و شامل واحدهای کوچکتری به نام اتصالات کارگر است و هر واحد مسئول مدیریت موضوعات درخواست است. فرآیندهای کارگر همچنین می توانند با سرورهای بالادستی ارتباط برقرار کنند و همچنین محتوا را روی دیسک بخوانند و بنویسند.
طراحی رویداد محور NGINX اجازه می دهد تا درخواست های کاربر به طور موثر در بین فرآیندهای کارگر توزیع شود و این وب سرور را از نظر مقیاس پذیری نسبت به Apache توانمندتر می کند. از آنجایی که NGINX میتواند هزاران درخواست را بدون مشکل پردازش کند، حتی در سیستمهای کم مصرف، این وب سرور برای وبسایتهای پربازدید مانند موتورهای جستجو، سایتهای تجارت الکترونیک و سرویسهای ذخیرهسازی آنلاین مناسب است. علاوه بر این، بسیاری از شبکههای محبوب تحویل محتوا (CDN) مانند MaxCDN و Cloudflare نیز از NGINX برای تحویل محتوا استفاده میکنند.
مقایسه عملکرد – محتوای استاتیک و پویا NGINX و Apache
عملکرد یک وب سرور به طور کلی با توانایی آن در مدیریت محتوای ایستا و پویا تعیین می شود. محتوای ایستا یک فایل وب است که هر بار که به کاربر نهایی تحویل داده می شود یکسان باقی می ماند و معمولاً در یک سرور CDN ذخیره می شود. بنابراین، به ندرت تغییر می کند و به رفتار کاربر بستگی ندارد، و آن را به یکی از ساده ترین انواع محتوا برای انتقال از طریق اینترنت تبدیل می کند. نمونههایی از فایلهای استاتیک شامل کتابخانه جاوا اسکریپت، فایلهای HTML و CSS و تصاویر است. از طرف دیگر محتوای پویا یک صفحه وب یا فایلی است که با توجه به علایق، ویژگی ها و ترجیحات کاربر تغییر می کند. این نوع محتوا برای همه یکسان به نظر نمی رسد زیرا زمانی که کاربر صفحه ای را درخواست می کند تولید می شود. فروشگاههای آنلاین و پلتفرمهای رسانههای اجتماعی نمونههایی از سایتهای دارای این نوع محتوا هستند.
از آنجایی که NGINX و Apache روشهای مختلفی برای رسیدگی به درخواستهای محتوای استاتیک و پویا دارند، بیایید بررسی کنیم کدام وب سرور در این مقایسه بین Apache و NGINX بهتر عمل میکند.
Apache
آپاچی محتوای استاتیک را با استفاده از رویکرد مبتنی بر فایل سنتی خود ارائه می دهد – عملکرد این عملیات در درجه اول تابعی از MPM های ذکر شده قبلی است. آپاچی همچنین می تواند محتوای پویا را در خود وب سرور بدون نیاز به اجزای خارجی اجرا کند. در عوض، محتوای پویا را با ادغام یک پردازشگر زبان مناسب در هر یک از نمونه های کارگر خود پردازش می کند و کاربران می توانند این پردازنده را از طریق ماژول های بارگذاری پویا آپاچی فعال کنند.
NGINX
وقتی صحبت از ارائه محتوای استاتیک به میان میآید، NGINX سریعتر از Apache است زیرا فایلهای استاتیک را در حافظه پنهان ذخیره میکند تا به محض درخواست در دسترس قرار گیرند. با این حال، NGINX توانایی پردازش محتوای پویا را ندارد. NGINX باید درخواست ها را به یک پردازنده خارجی مانند FastCGI Process Manager (PHP-FPM) ارسال کند تا آنها را اجرا کند و محتوای پویا را پردازش کند. هنگامی که این وب سرور محتوا را دریافت می کند، نتایج را به کاربر ارسال می کند.
پیکربندی سطح دایرکتوری برای NGINX و Apache
اگر می خواهید کنترل اجزای خاصی از وب سایت خود را به کاربر دیگری بدهید، ضروری است که وب سروری را انتخاب کنید که امکان پیکربندی در سطح دایرکتوری را در فهرست های محتوای آن فراهم کند. در این مقایسه بین NGINX و Apache، خواهیم دید که کدام وب سرور اجازه پیکربندی در سطح دایرکتوری را می دهد.
Apache
آپاچی امکان پیکربندی اضافی در هر دایرکتوری را از طریق فایل های .htaccess فراهم می کند. فایلهای .htaccess به کاربران اجازه میدهند تا جنبههای خاصی از وبسایت شما را بدون اجازه تغییر فایل پیکربندی اصلی کنترل کنند. به همین دلیل است که بسیاری از ارائه دهندگان هاست اشتراکی از Apache استفاده می کنند تا به کاربران خود دسترسی به دایرکتوری های خاص را در حالی که کنترل فایل پیکربندی اصلی را حفظ می کنند، فراهم کنند. آپاچی همچنین فایلهای htaccess. را هر زمان که در مسیر درخواست یافت میشوند تفسیر میکند، به این معنی که میتوانند بلافاصله بدون بارگیری مجدد وب سرور پیادهسازی شوند. ماژول های پویا آپاچی می توانند وظایف مختلفی مانند پردازش محتوای پویا، تنظیم متغیرهای محیطی و بازنویسی URL ها را انجام دهند. در اینجا برخی از رایج ترین ماژول های مورد استفاده توسط آپاچی آورده شده است:
- mod_headers – امکان کنترل و سفارشی سازی هدرهای درخواست و پاسخ HTTP در آپاچی را فراهم می کند.
- mod_expires – به کاربران اجازه می دهد تا فواصل انقضا را برای انواع مختلف محتوا در وب سایت ها تعیین کنند.
- mod_authz_host – برای کنترل و مجوز دسترسی بر اساس نام میزبان، آدرس IP یا ویژگی های درخواست استفاده می شود.
- mod_mime – اجازه می دهد تا اطلاعات متا محتوا را به پسوندهای نام فایل اختصاص دهید.
- mod_alias – به کاربران اجازه می دهد تا به مشتریان اطلاع دهند که URL درخواستی نادرست است.
به یاد داشته باشید که آپاچی با ماژول ها از پیش ساخته شده و آنها را در حافظه سرور بارگذاری می کند. پس حتما ویژگی هایی را که برای کاهش مصرف منابع به آن نیاز ندارید غیرفعال کنید.
NGINX
NGINX بیش از 100 ماژول شخص ثالث را برای ادغام در نرم افزار پایه ارائه می دهد. کاربرانی که درک خوبی از زبان C دارند همچنین می توانند ماژول های NGINX را ایجاد کنند که نیازهای پروژه آنها را برآورده کند. با این حال، ماژول های NGINX را نمی توان به صورت پویا بارگذاری کرد زیرا باید در خود نرم افزار پایه کامپایل شوند. برای اینکه ماژول ها به صورت پویا بارگذاری شوند، کاربران باید NGINX Plus را انتخاب کنند. این باعث می شود NGINX نسبت به Apache انعطاف پذیری کمتری داشته باشد، اما امنیت بهتری را به همراه دارد زیرا ادغام بسیاری از ماژول های پویا می تواند خطرات امنیتی ایجاد کند.
امنیت در NGINX و Apache
انتخاب یک وب سرور امن و قابل اعتماد، که بتواند از داده های وب سایت شما محافظت کند و به طور مرتب با آخرین اتصال ها به روز شود، ضروری است.
Apache
بنیاد نرمافزار آپاچی فعالانه تلاش میکند تا هرگونه مشکل امنیتی را با نرمافزار خود حذف کند تا امنیت سرور HTTP آپاچی را حفظ کند. کاربران می توانند در لیست پستی اعلانات سرور آپاچی مشترک شوند تا از آخرین به روز رسانی های تیم توسعه نرم افزار مطلع شوند. آپاچی همچنین شامل برخی تنظیمات پیکربندی است که می تواند به مدیریت حملات Denial of Service (DoS) کمک کند، مانند:
- TimeOut – تعداد ثانیههایی را که آپاچی برای رویدادهای خاص منتظر میماند، قبل از عدم موفقیت در یک درخواست، تعیین میکند. وب سایت هایی که مستعد حملات DoS هستند باید این عدد را فقط چند ثانیه تنظیم کنند.
- RequestReadTimeout – اتصالات کاربرانی را که درخواست های خود را به اندازه کافی سریع ارسال نمی کنند، می بندد.
- KeepAliveTimeout – تعیین می کند که سرور آپاچی چه مدت منتظر بماند و اتصال را برای درخواست جدید باز نگه دارد.
به یاد داشته باشید که اگرچه آپاچی برای ایمن و پایدار طراحی شده است، اما امنیت سرور شما به نحوه پیکربندی آن نیز بستگی دارد. بنابراین، اقدامات امنیتی اضافی مانند نصب فایروال برنامه وب (WAF) را در نظر بگیرید.
NGINX
NGINX همچنین چندین کنترل امنیتی خارج از جعبه را ارائه می دهد. یکی از آنها محدود کردن نرخ است که نرخ درخواست ورودی را به مقدار معمولی برای مشتریان واقعی کاهش می دهد و به محافظت از سرور شما در برابر حملات DDoS کمک می کند. محدود کردن نرخ NGINX همچنین برای محافظت از سرورهای برنامه بالادستی در برابر درخواست های بیش از حد کاربر در یک زمان استفاده می شود. علاوه بر این، کاربران NGINX میتوانند با توجه به آدرس IP مشتریان، دسترسی را مجاز یا غیرمجاز کنند و حملات DDoS را متوقف کنند. همچنین، این دسترسی میتواند توسط رمز عبور، نتیجه زیر-درخواست یا پهنای باند محدود شود.
علاوه بر این، NGINX نسخه جدیدی از امنیت لایه حمل و نقل (TLS) را پشتیبانی میکند که رمزگذاری قابل اعتماد اطلاعات ارسال شده در اینترنت را فراهم میکند. برای بهرهبرداری از قابلیتهای امنیتی بیشتر، میتوانید NGINX Plus را در نظر بگیرید. با این نسخه پریمیوم، شما به قابلیت ورود یکبار (SSO) دسترسی خواهید داشت که به شما امکان میدهد با استفاده از یک مجموعه اطلاعات اعتباری، به صورت امن در چندین وب سایت و برنامه وارد شوید. علاوه بر این، کاربران NGINX میتوانند به وبسایت این سرور منبع باز مراجعه کنند تا نظرات امنیتی و اطلاعاتی در مورد بهروزرسانیهای جدید را پیدا کنند.
پشتیبانی از پلتفرم NGINX و Apache
افرادی که تازه وارد دنیای توسعه وب شده اند باید مطمئن شوند که وب سروری که انتخاب می کنند کمک و پشتیبانی می کند. این به شما امکان می دهد در صورت بروز مشکل در نرم افزار کمک دریافت کنید.
Apache
Apache ارائه مستندات کامل به زبان فرانسه را در اختیار کاربران قرار میدهد که موضوعات مختلفی مرتبط با این نرمافزار را پوشش میدهد. همچنین، Apache پشتیبانی از جامعه را از طریق ایمیل ارائه میدهد که به کاربران امکان میدهد از افرادی که با HTTPD Apache آشنایی دارند، کمک بگیرند. کاربران همچنین میتوانند سوالات سریع خود را در Stack Overflow و در کانال #httpd شبکه IRC Freenode مطرح کنند.
NGINX
برای کمک به کاربران در حل هرگونه مشکل توسعه، NGINX یک لیست پستی را توسط جامعه مدیریت و مدیریت میکند. علاوه بر این، این سرور وب یک انجمن پشتیبانی عمومی را برای کمک به کاربرانش ارائه میدهد. با توجه به تعداد زیاد کاربران NGINX، نیز آسان است تا به انجمنهای دیگری برخورد کنید که توسعه دهندگان در آنها به اشتراک میگذارند که چگونه مشکلات فنی را حل کنند.
NGINXهمچنین منابع زیادی برای یادگیری ارائه میدهد تا به کمک مبتدیان بیشتر درباره این نرمافزار بدانند، از جمله وبلاگها، واژهنامهها، مستندات، کتابهای الکترونیکی، وبینارها و بروشورهای فنی. علاوه بر این، کاربران NGINX Plus همچنین میتوانند از پشتیبانی اختصاصی توسط تیم آن استفاده کنند که آماده کمک در مورد نصب و پیادهسازی است.
یک وب سرور را انتخاب کنید NGINX و Apache
بعد از بررسی مقایسهها بین NGINX و Apache، روشن است که هر نرمافزار دارای مزایا و معایب خاص خود است. بنابراین، قبل از انتخاب بین NGINX و Apache، شناختن نیازهای خود بسیار مهم است.
Apacheمناسب برای محیطهای مشترک میزبانی است. آن دسترسی root را برای ویرایش فایل پیکربندی اصلی فراهم میکند که به کاربران خاص اجازه میدهد بسیاری از جوانب سرور را کنترل کنند. معایب آن این است که این نرمافزار ممکن است بسیاری از حافظه سرور را مصرف کند. با توجه به NGINX، این نرمافزار در پردازش درخواستهای محتوای استاتیک نسبت به Apache عملکرد بهتری دارد. همچنین، در زمان بار زیاد، میتواند به همزمان به تعداد زیادی مشتری خدمت کند که این انتخاب بسیار مناسبی برای یک وبسایت با ترافیک بالا است. علاوه بر این، NGINX چند منظوره است: کاربران میتوانند آن را به عنوان پروکسی معکوس، توزیع بار و راهکار حافظه پنهان استفاده کنند.
با این حال، این نرمافزار به طور پیش فرض قادر به سرویس دهی محتوای پویا نیست و باید همه درخواستهای محتوای پویا را به یک سرور برنامههای پشتیبان هدایت کند. به یاد داشته باشید که هنوز سایر سرورهای وب محبوبی وجود دارند که میتوانید از آنها انتخاب کنید و کارکردی بیشتر از Apache و NGINX را ارائه دهند. برخی از اینها شامل Tornado، Node.js و Tomcat میشوند.
آیا آپاچی و NGINX می توانند با هم کار کنند؟
ممکن است NGINX و Apache را به طور همزمان اجرا کرده و از قدرت هر سرور بهرهبرداری کنید – NGINX برای سرعت پردازش و Apache برای ماژولهای قدرتمند خود.روش رایج برای استفاده از هر دو نرمافزار این است که NGINX را به عنوان پروکسی معکوس در پیش روی Apache قرار دهید، زیرا میتواند صدها اتصال همزمان را مدیریت کند. به عنوان پروکسی پیش رو برای Apache، NGINX همه درخواستهای مشتریان را پردازش خواهد کرد. به عنوان مثال، اگر یک درخواست برای محتوای استاتیک دریافت کند، NGINX فایلها را مستقیماً به مشتری ارائه خواهد کرد. به عنوان پروکسی معکوس برای محتوای پویا، NGINX درخواست را به Apache منتقل میکند که آن را پردازش و محتوای نهایی را از طریق NGINX به مشتری انتقال میدهد. استفاده از Apache و NGINX میتواند مانع برخی از مسدودیهایی شود که معمولاً در زمانی رخ میدهند که یک نخ یا فرآیند Apache مشغول است، که بهبود عملکرد سرور شما را تسهیل میکند.
نتیجه گیری
انتخاب بین Apache و NGINX ممکن است سخت باشد زیرا هر دوی آنها به نوعی قدرتمند هستند. به عنوان مثال، Apache مجموعهای گسترده از ماژولها را ارائه میدهد، در حالی که NGINX قابلیت مقیاسپذیری و سرعت را ارائه میکند. تفاوت اصلی بین سرورهای وب NGINX و Apache این است که NGINX دارای یک معماری مبتنی بر رویداد است که برخی از درخواستها را در یک نخ پردازش میکند، در حالی که Apache بر اساس فرآیندها کار میکند و برای هر درخواست یک نخ ایجاد میکند. بنابراین، عملکرد NGINX معمولاً بهتر است. هر نرمافزار مزایا و معایب خود را دارد، بنابراین تصمیم بر استفاده از NGINX یا Apache کاملاً به عهده ترجیحات کاربر است.
در اینجا جمعبندی از هر جنبهای که مقایسه کردهایم را میآوریم:
- طراحی پایه – Apache یک نخ تنها برای پردازش هر درخواست اتصال ایجاد میکند، در حالی که یک فرآیند NGINX میتواند همزمان به چندین اتصال پاسخ دهد.
- عملکرد – NGINX برای ارائه محتوای استاتیک از Apache سریعتر است، اما برای پردازش درخواستهای محتوای پویا نیاز به نرمافزار دیگری دارد. به عبارت دیگر، Apache میتواند محتوای پویا را به صورت داخلی مدیریت کند.
- پیکربندی در سطح دایرکتوری – Apache با فایلهای .htaccess همراه است که به کاربران امکان تغییر پیکربندی سایت خود بدون تغییر تنظیمات سرور اصلی را میدهد. با این حال NGINX پشتیبانی از پیکربندی در سطح دایرکتوری را ندارد.
- ماژولها – ماژولهای Apache قابلیت بارگیری پویا را دارند، در حالی که ماژولهای NGINX باید در نرمافزار اصلی کامپایل شوند.
- امنیت – Apache و NGINX هر دو امن و قابل اعتماد هستند. همچنین، آنها دارای ابزارهای امنیتی متعددی برای محافظت از یک سایت در برابر حملات DDoS هستند.
- پشتیبانی – Apache و NGINX هر دو پشتیبانی جامعه و مستندسازی را برای کمک به مبتدیان در صورت بروز مشکل ارائه میدهند.
- به جای انتخاب یا Apache یا NGINX، ممکن است مؤثرتر باشد هر دو نرمافزار را برای بهبود عملکرد سرور خود استفاده کنید – NGINX به عنوان پروکسی معکوس برای پردازش درخواستهای محتوای استاتیک و Apache به عنوان بکاند برای ارائه محتوای پویا.
امیدواریم که این مقاله به شما کمک کرده باشد تا مفهوم NGINX و Apache را درک کنید، تفاوتهای بین آنها را بیابید و زمانی که باید در نظر بگیرید از آنها استفاده کنید.