مقایسه وب سرور Apache و Nginx
اینترنت تسخیر جهان را در دهه 90 میلادی آغاز کرد، کل پروتکل Web را میتوان به عنوان یک بازدید کننده در نظر گرفت که یک سند را از یک آدرس وب معین به کمک سیستم DNS و IP که درخواست را به کامپیوتر مناسب ارسال مینماید. این کامپیوتر که میزبان صفحه وب درخواستی است، صفحه وب را به بازدیدکننده به اصطلاح serve میکند
وب سرور نرم افزار کامپیوتری است که محتوا را از طریق اینترنت ارائه نموده و دادهها را بین سیستم میزبان و مرورگر کاربر منتقل میکند.
انتخاب وب سرور مناسب هنگام راه اندازی یک وب سایت یا راه اندازی یک پروژه سرور مجازی (VPS) بسیار مهم است زیرا میتواند عملکرد و امنیت آنها را به طور قابل توجهی تحت تاثیر قرار دهد. Apache و Nginx همواره دو گزینه محبوب هستند.
در این مطلب برای کمک به شما در تصمیم گیری، NGINX و Apache را به تفصیل مقایسه میکنیم. پس از ارائه یک نمای کلی از دو گزینه، آنچه را که هر وب سرور در مورد معماری، سازگاری، عملکرد و امنیت ارائه می دهد بررسی خواهیم کرد.
قبل از مقایسه Apache و NGINX تفاوتها و ویژگیهای کلی این وب سرورها را بررسی میکنیم تا در درک بیشتر آنها کمک کند.
آپاچی - Apache
آپاچی که معمولا با نام Apache یا Apache HTTPD شناخته میشود، یک نرم افزار وب سرور رایگان و متنباز است. درخواستهای کلاینت را پردازش کرده و محتوای وب را از Hypertext Transfer Protocol (HTTP) ارائه میدهد.
بنیاد نرم افزار آپاچی در سال 1995 وب سرور آپاچی را منتشر و از آن زمان تاکنون آن را حفظ کرده است. آپاچی برترین وب سرور در اوایل پیدایش اینترنت بود و امروزه نیز بسیار محبوب است.
حدود 30 درصد از وب سایتها را در سراسر جهان در حال حاضر از Apache HTTP Server استفاده میکنند که آن را به دومین وب سرور بزرگ در بازار تبدیل میکند.
وب سرور آپاچی با بسیاری از سیستم عاملها مانند مایکروسافت ویندوز، OpenVMS و دیگر سیستم عاملهای یونیکس مانند لینوکس و macOS سازگار است و پروتکلهای ارتباطی مختلف از جمله HTTP، HTTPS، WebSocket و HTTP/2 را پشتیبانی میکند.
Apache HTTP server بخشی از پشته LAMP، یکی از اولین پشتههای نرم افزار متنباز برای توسعه وب است. این وب سرور را با نرم افزارهای مختلف، سیستم های مدیریت محتوا (CMS)، زبانهای برنامه نویسی و فریمورکهای وب سازگار میکند.
سرور آپاچی به دلیل ماژول سیستم خود که عملکرد و انعطاف پذیری بالایی را ارائه میدهد محبوب است. با ماژولهای آپاچی، کاربران به راحتی میتوانند توابعی را اضافه یا حذف کنند تا سرور را مطابق با نیاز خود تغییر دهند.
انجین ایکس - Nginx
NGINX که به صورت Engine X تلفظ میشود یکی از قابل اعتمادترین وب سرورهایی است که مقیاس پذیری و سرعت را ارائه میدهد. Apache و NGINX اندازه سهم بازار مشابهی دارند، اما دومی محبوبتر است. هر دو وب سرور متنباز و رایگان هستند.
ایگور سیسویف، توسعه NGINX را در سال 2002 آغاز کرد تا به مشکل C10K در وب اولیه پاسخ دهد. در آن زمان، بسیاری از وب سرورها تنها می توانستند 10000 اتصال را به طور همزمان مدیریت کنند.
وب سرور NGINX با معماری asynchronous و event-driven منتشر شد که به آن اجازه میدهد تا بسیاری از درخواستهای کلاینت را به طور همزمان پردازش نماید.
این وب سرور محبوب به دلیل توانایی خود در مدیریت ترافیک و مقیاس بالا با حداقل سخت افزار شناخته شده است. به علاوه، در ارائه سریع فایل های استاتیک عالی است و بخشی از پشته وب LEMP جایگزین محبوب LAMP آپاچی میباشد.
علاوه بر وب سرور، توسعه دهندگان وب از NGINX به عنوان لود بالانسر (load balancer) استفاده میکنند تا کارایی منابع و در دسترس بودن سیستم میزبان را بهبود بخشند. علاوه بر این، NGINX میتواند به عنوان یک پروکسی معکوس (reverse proxy) عمل کند یک واسطه که درخواستهای محتوا را به طور مساوی توزیع میکند تا از جریان ترافیک روان بین سرورها و کلاینت اطمینان حاصل نماید.
در مارس 2019، Nginx Inc توسط F5 Networks به مبلغ 670 میلیون دلار خریداری شد. در آن زمان، بنا بر گزارش Techcrunch حدود 375 میلیون وبسایت با حدود 1500 مشتری پولی از Nginx server استفاده میکردند.
بر اساس دادههای w3techs سهم بازار Nginx به طور پیوسته در حال رشد بوده و آپاچی را از جایگاه اول خارج کرده است:
این داده ها مربوط به کل وب سرورهای جهانی است، اما اگر نمونهای از یک میلیون وب سایت برتر را در نظر بگیریم،Nginx مدتی است که برترین وب سرور جهان شده!
مدیریت اتصالات (Handling Connections) در آپاچی و Nginx
معماری وب سرور، چیدمان یا مکانیزم منطقی است که نحوه رسیدگی نرم افزار به درخواستها، اتصالات و ترافیک وب را تعیین میکند، یکی از معیارهای ضروری است که هنگام انتخاب وب سرور باید در نظر گرفته شود.
آپاچی
به طور پیش فرض، آپاچی از معماری مبتنی بر فرآیند(process-driven) پیروی میکند و یک رشته واحد(single thread) برای رسیدگی به هر درخواست اتصال ایجاد مینماید.
نکته منفی این است که آپاچی باید هنگام رسیدگی به بسیاری از درخواستهای کلاینت، فرآیندهای مختلفی ایجاد کند که میتواند منجر به مصرف منابع سنگین و موجب مشکلات سرور مانند سرعت بارگذاری پایین وب سایت و خرابی مکرر شود.
به عنوان یک راه حل، آپاچی ماژول های چند پردازشی مختلف multi-processing modules (MPMs) را ارائه داد که نحوه پذیرش و رسیدگی به درخواستهای HTTP را تعیین کنند. کاربران میتوانند هر MPM را انتخاب کنند که به بهترین وجه با نیازهای آنها مطابقت دارد. سه MPM اصلی وجود دارد:
- mpm_prefork که رشتهای نیست، به این معنی که هر پردازش فرزند فقط میتواند یک درخواست را انجام دهد. عملکرد آن بلافاصله پس از فراتر رفتن درخواستها از تعداد فرآیندها کاهش مییابد و مقیاسپذیری با این MPM را دشوار میکند.
- mpm_worker هر فرآیند worker MPM میتواند چندین رشته ایجاد کند که میتواند اتصالات جداگانه را مدیریت نموده که به سیستم اجازه میدهد تا چندین درخواست را به طور همزمان ارائه دهد. از آنجایی که threadها به منابع کمتری نسبت به فرآیندها نیاز دارند، مقیاس پذیرتر و کارآمدتر از Prefork MPM است.
- mpm_event شبیه worker MPM است اما برای keep-alive connections بهینه شده است. برای انجام این کار، رشتههای اختصاصی را برای مدیریت چنین اتصالات و تخصیص درخواستهای فعال به رشتههای دیگر ذخیره میکند. این فرآیند به event MPM کمک میکند علیرغم رسیدگی به بسیاری از درخواستهای keep-alive ، عملکرد خوب و در نتیجه مصرف منابع کم داشته باشد.
به یاد داشته باشید که شما می توانید تنها یک MPM را به طور همزمان در سرور خود بارگذاری کنید. اگر پروژه شما به ثبات و سازگاری نیاز دارد، از Prefork MPM استفاده کنید. با این حال، استفاده از MPM های worker یا event را برای وبسایتهایی که به مقیاس پذیری و تنوع بیشتری نیاز دارند، در نظر بگیرید.
NGINX
بسیاری از وب سرورها از معماری رشتهای ساده یا مبتنی بر فرآیند استفاده میکنند. NGINX از رویکرد متفاوتی با معماری ناهمزمان(asynchronous)، غیر مسدود کننده(non-blocking) و رویداد محور(event-driven) استفاده مینماید که به وبسرور امکان میدهد چندین اتصال را در یک فرآیند واحد مدیریت کند.
NGINX دارای یک فرآیند اصلی(master process) است که عملیات ممتازی مانند اتصال به پورتها، خواندن و ارزیابی فایلهای پیکربندی و ایجاد فرآیندهای فرزند را انجام میدهد.
سه نوع پردازش فرزند NGINX وجود دارد:
- Cache loader process امکان میدهد کش مبتنی بر دیسک را در منطقه حافظه لود کنید. این فرآیند منابع سرور کوچکی را مصرف میکند زیرا تنها یک بار پس از شروع NGINX اجرا میشود.
- Cache manager process با بررسی دورهای و حذف کمترین دسترسی، مقدار داده های ذخیره شده را در اندازههای پیکربندی شده نگه میدارد.
- Worker process چندین اتصال HTTP را به طور همزمان مدیریت میکند و نیاز به ایجاد فرآیندها یا رشته های جدید را از بین میبرد. در عوض هر فرآیند به طور مستقل اجرا میشود و شامل واحدهای کوچکتری به نام اتصالات worker است که مسئول andling request threads هستند. علاوه بر برقراری ارتباط با سرورهای بالادستی، worker process میتواند محتوای ذخیره شده را بخواند و بنویسد.
معماری رویداد محور NGINX میتواند به طور موثر درخواستهای کلاینت را در بین فرآیندهای worker توزیع کند. در نتیجه، کارایی و مصرف منابع در آپاچی و NGINX متفاوت است.
از آنجایی که NGINX میتواند هزاران درخواست کلاینت را با حداقل منابع پردازش کند، برای وبسایتهای پربازدید مانند موتورهای جستجو، سایتهای تجارت الکترونیک و خدمات cloud storage مناسب است.
بسیاری از شبکههای محبوب تحویل محتوا (CDN)، مانند MaxCDN و Cloudflare، از NGINX برای رسیدگی به درخواستها استفاده میکنند.
مقایسه عملکرد آپاچی و Nginx در محتوای داینامیک و استاتیک
در این بخش، مقایسه عملکرد Apache و NGINX برای پردازش درخواست محتوای استاتیک و داینامیک را بررسی خواهیم کرد.
محتوای استاتیک (Static content) فایلهای وب هستند که هنگام تحویل به کاربران نهایی یکسان مانده و بر اساس درخواست آنها تغییر نمیکنند. این ساده ترین نوع محتوا برای انتقال از طریق اینترنت است و معمولا در CDN ذخیره میشود. به عنوان مثال می توان به کتابخانه جاوا اسکریپت، فایل های HTML و تصاویر اشاره کرد.
در همین حال، محتوای داینامیک (dynamic content) یک فایل وب است که بر اساس اقدامات، ویژگیها و ترجیحات کاربر تغییر میکند. این محتوای صفحه وب بسته به کاربر متفاوت به نظر میرسد زیرا طبق یک درخواست خاص تولید شده است. نمونهای از چنین محتوایی فایلهای PHP هستند.
آپاچی
آپاچی با استفاده از رویکرد سنتی مبتنی بر فایل(file-based approach)، محتوای استاتیک را ارائه میدهد. عملکرد این عملیات در درجه اول تابعی از MPMها است.
یکی از مزایای سرورهای آپاچی توانایی آن در مدیریت محتوای داینامیک به صورت داخلی بدون تکیه بر اجزای خارجی است.
محتوای داینامیک را با ادغام یک پردازنده از زبان های برنامه نویسی مناسب در هر نمونه Worker پردازش میکند. کاربران می توانند این پردازنده را از طریق dynamically loadable modules آپاچی فعال کنند.
NGINX
از نظر ارائه محتوای استاتیک، NGINX سریعتر از Apache است زیرا فایل های استاتیک را در حافظه پنهان (cache) ذخیره میکند تا هر زمان که درخواست شود آنها را در دسترس قرار دهد.
با این حال، NGINX قابلیت پردازش محتوای داینامیک را ندارد. برای پردازش محتوای داینامیک ، باید درخواستها را به یک پردازنده خارجی مانند FastCGI Process Manager (PHP-FPM) ارسال کند.
این پردازنده خارجی درخواستها را به محتوای داینامیک تفسیر و نتیجه را به وب سرور ارسال میکند. هنگامی که وب سرور محتوا را دریافت کرد، نتایج را به کلاینت منتقل مینماید.
خرید سرور مجازی لینوکس در پنج موقعیت جغرافیایی ایران، ترکیه، هلند، آلمان و آمریکا با قابلیت تحویل آنی در پارسدو فراهم است.
مقاسه پیکربندی Directory-Level در آپاچی و Nginx
اگر میخواهید کنترل برخی از اجزای وب سایت خود را به کاربر دیگری بدهید، وب سروری را انتخاب کنید که اجازه پیکربندی در سطح دایرکتوری را میدهد.
آپاچی
وب سرورهای آپاچی از پیکربندی اضافی در هر دایرکتوری از طریق فایلهای htaccess. پشتیبانی میکنند. آنها به کاربران غیرمجاز اجازه میدهند تا جنبه های خاصی از وب سایت شما را بدون اجازه ویرایش به فایلهای پیکربندی اصلی کنترل کنند.
بسیاری از ارائه دهندگان هاست اشتراکی از Apache استفاده میکنند تا به مشتریان خود دسترسی به دایرکتوریهای خاص را داشته باشند و در عین حال کنترل فایل پیکربندی اصلی را حفظ کنند.
آپاچی فایلهای htaccess را هر بار که در مسیر درخواست یافت میشوند، تفسیر میکند. وب سرور می تواند بلافاصله قوانین را در فایلها بدون راه اندازی مجدد(ریبوت) اجرا کند.
با این حال، استفاده از فایلهای htaccess چندین جنبه منفی دارد؛ میتواند بر عملکرد سایت تاثیر بگذارد زیرا آپاچی هر فایل htaccess. را برای هر درخواست داکیومنت لود میکند. این کار منابع زیادی را مصرف مینماید، به خصوص برای سایتهایی با ترافیک بالا و صفحات وب پیچیده.
علاوه بر این، اجازه دادن به کاربران برای تغییر فایلهای htaccess. ممکن است منجر به اشتباهات امنیتی شود. اگر نیازی به تغییر تنظیمات سرور توسط طرفهای دیگر ندارید، مطمئن شوید که دسترسی به چنین فایلهایی را غیرفعال کردهاید.
NGINX
برخلاف آپاچی، NGINX از پیکربندی در سطح دایرکتوری پشتیبانی نمیکند. در حالی که این منجر به انعطاف پذیری محدود میشود، به افزایش عملکرد سایت کمک میکند.
از آنجایی که NGINX به گونهای طراحی شده است که کارآمد باشد، نیازی به جستجوی فایلهای htaccess. و تفسیر آنها نیست و به آن اجازه میدهد تا درخواست را سریعتر از آپاچی ارائه دهد.
NGINX با غیر مجاز کردن پیکربندی اضافی، سرور شما را ایمن نگه میدارد زیرا فقط کاربرانی که مجوز root دارند میتوانند تنظیمات سرور و سایت را تغییر دهند.
مقایسه ماژولها در آپاچی و NGINX
اکثر وب سرورها به طور پیش فرض دارای یک فایل پیکربندی استاندارد هستند. با این حال، توسعه دهندگان اغلب ماژولهایی را برای گسترش عملکرد وب سرور و راحت تر کردن برنامه نویسی در نظر میگیرند.اگر چه عملکردهای NGINX و Apache از طریق یک سیستم ماژول قابل توسعه هستند، اما آنها متفاوت عمل میکنند.
آپاچی
آپاچی یک وب سرور قابل تنظیم است که به کاربران اجازه می دهد بیش از 50 ماژول رسمی و شخص ثالث را نصب کنند. همچنین از dynamic module loading برای استفاده کارآمدتر از حافظه پشتیبانی میکند.
در حالی که ویژگیهای اصلی سرور همیشه در دسترس هستند، کاربران میتوانند ماژولها را load و unload کنند تا آنها را اصلاح نمایند.
ماژولهای آپاچی میتوانند وظایف مختلفی مانند پردازش محتوای داینامیک(processing dynamic content)، تنظیم متغیرهای محیطی(setting environment variables) و بازنویسی URLها (rewriting URLs) را انجام دهند. در ادامه برخی از متداول ترین ماژولهای آپاچی آورده شده است:
- mod_headers به شما امکان میدهد هدرهای درخواست و پاسخ HTTP را در وب سرور آپاچی خود کنترل و سفارشی کنید.
- mod_expires به کاربران اجازه میدهد تا فواصل انقضا را برای انواع مختلف محتوای وب سایت تعریف کنند.
- mod_authz_host کنترل دسترسی و مجوز را بر اساس نام میزبان(hostname)، آدرس IP یا ویژگیهای درخواست فعال میکند.
- mod_mime به تخصیص meta-information محتوا با پسوندهای نام فایل کمک میکند.
- mod_alias به کاربران اجازه میدهد به مشتریان اطلاع دهند که URL درخواستی نادرست است.
به یاد داشته باشید که آپاچی دارای ماژولهای از پیش نصب شده است و آنها را در حافظه سرور بارگذاری میکند. بنابراین، برای کاهش مصرف منابع و حفظ عملکرد بهینه سرور، ویژگیهای استفاده نشده را غیرفعال کنید.
NGINX
NGINX ماژول های رسمی و شخص ثالث مختلفی را برای ادغام در نرم افزار اصلی ارائه میدهد. کاربران آگاه به زبان C میتوانند ماژولهای سفارشی NGINX را متناسب با نیاز پروژه خود ایجاد کنند.
با این حال، NGINX از dynamic module loading پشتیبانی نمیکند، زیرا وب سرور باید آنها را در نرم افزار اصلی کامپایل کند. کاربران باید NGINX Plus را انتخاب کنند تا به صورت داینامیک بارگذاری شوند.
در حالی که این امر NGINX را کمتر از آپاچی انعطافپذیر میکند، اما به بهبود امنیت کمک مینماید زیرا ادغام بسیاری از ماژولهای داینامیک ممکن است خطرات امنیتی ایجاد کند.
مقایسه امنیت آپاچی و NGINX
انتخاب یک وب سرور امن برای ایمن نگه داشتن اطلاعات وب سایت و به روز نگه داشتن آخرین وصلهها بسیار مهم است. این بخش مقایسه بین Apache و NGINX در مورد ویژگیهای امنیتی است.
آپاچی
بنیاد نرمافزار آپاچی فهرست اطلاعیههای سرور آپاچی را دارد تا اطمینان حاصل کند که کاربران از آخرین بهروزرسانیهای تیم توسعه نرمافزار مطلع میشوند.
برای ایمن نگه داشتن وب سرور، آپاچی تنظیمات پیکربندی را برای کمک به denial-of-service (DoS) اجرا میکند، مانند:
- TimeOut تعیین میکند که آپاچی چند ثانیه قبل از انجام یک درخواست برای رویدادهای خاص منتظر بماند. وبسایتهایی که در معرض حملات DoS قرار میگیرند باید این تعداد را در چند ثانیه داشته باشند.
- RequestReadTimeout اتصالات کلاینتهایی را که درخواستهای خود را با سرعت کافی ارسال نمیکنند، قطع مینماید.
- KeepAliveTimeout تصمیم میگیرد که سرور آپاچی چه مدت منتظر بماند و اتصال را برای درخواست جدید باز نگه دارد.
اگر چه آپاچی برای ایمنی و پایداری ساخته شده است، اما امنیت سرور شما به نحوه پیکربندی آن نیز بستگی دارد. اطمینان حاصل کنید که اقدامات امنیتی اضافی مانند نصب web application firewall (WAF) را اجرا کنید.
NGINX
NGINX چندین کنترل امنیتی را به صورت پیشفرض ارائه میکند، مانند محدود کردن نرخ(rate-limiting). این ویژگی از سرور شما در برابر حملات DDoS با کاهش نرخ درخواست ورودی به مقداری معمولی برای کلاینتهای واقعی محافظت میکند.
محدودیت نرخ(Rate-limiting) نیز برای محافظت از سرورهای برنامه بالادستی در برابر overload درخواستهای همزمان کاربر استفاده میشود و به بهبود زمان کارکرد سرور و حفظ عملکرد ثابت کمک می کند.
علاوه بر این، کاربران NGINX میتوانند با اجازه دادن یا رد کردن دسترسی بر اساس آدرس IP مشتریان، از حملات DDoS جلوگیری کنند. آنها همچنین می توانند دسترسی را با استفاده از رمز عبور، نتیجه یک درخواست فرعی یا پهنای باند محدود کنند.
علاوه بر این، NGINX از آخرین نسخه transport layer security (TLS) پشتیبانی میکند که رمزگذاری قابل اعتماد انتقال داده را ارائه میدهد.
برای دریافت ویژگیهای امنیتی بیشتر، از NGINX Plus استفاده کنید. این نسخه پریمیوم به شما امکان دسترسی به تابع single sign-on (SSO) را میدهدتا با یک مجموعه از اعتبارنامهها به طور ایمن دسترسی به چندین وب سایت و برنامه را تایید کنید.
مقایسه پشتیبانی از پلتفرم آپاچی و NGINX
همه توسعه دهندگان باید یک وب سرور با پشتیبانی عالی از کاربر برای اطمینان از کمک در هنگام مواجهه با مشکلات مربوط به نرم افزار انتخاب کنند.
آپاچی
آپاچی داکیومنت گستردهای که موضوعات مختلفی را در مورد نرم افزار پوشش میدهددر دسترس گذاشته و از طریق ایمیل پشتیبانی کامیونیتی را فراهم میکند و به کاربران امکان می دهد از افرادی که با Apache HTTPD آشنا هستند کمک بگیرند.
کاربران همچنین میتوانند در Stack Overflow و هشتگ httpd# در کانال Freenode IRC network سوالات سریع بپرسند. در حالی که آپاچی پشتیبانی مستقیم مشتری را ارائه نمیدهد، کاربران به دلیل محبوبیت آن میتوانند به راحتی پاسخهای آنلاین مربوط به وب سرور را پیدا کنند.
علاوه بر این، شرکتهای پشتیبانی فنی شخص ثالث، کمکهای اختصاصی برای آپاچی با قیمتهای متفاوت ارائه میکنند. در غیر این صورت، می توانید از ارائه دهنده هاست خود پشتیبانی دریافت کنید که معمولا به صورت رایگان با طرح خریداری شده ارائه میشود.
NGINX
NGINX یک mailing list مبتنی بر جامعه را برای کمک به کاربران در حل مشکلات توسعه وب و یک انجمن پشتیبانی عمومی برای کمک به کاربران خود ارائه می دهد.
NGINX همچنین منابع یادگیری بسیاری را برای کمک به مبتدیان برای یادگیری بیشتر در مورد نرم افزار فراهم کرده، مانند وبلاگها، واژه نامهها، داکیومنتها، کتابهای الکترونیکی، وبینارها و دیتاشیتها.
برخلاف آپاچی، NGINX پشتیبانی اختصاصی از تیم خود در نسخه پریمیوم ارائه میدهد که میتواند به شما در نصب و راه اندازی وب سرور کمک کند.
انتخاب یک وب سرور
بر اساس مقایسهها، موارد استفاده Apache و NGINX متفاوت است. این باعث می شود که هر یک از آنها برای نیازهای مختلف کاربر مناسب باشند. قبل از انتخاب، مطمئن شوید که مزایا و معایب هر دو گزینه را درک کرده اید.
مزایای سرور آپاچی عمدتا در انعطاف پذیری آن نهفته است. دسترسی root را برای ویرایش فایل پیکربندی اصلی ارائه میدهد و به کاربران غیرمجاز اجازه میدهد چندین تنظیمات سرور را کنترل کنند. با این حال، میتواند مقدار زیادی از حافظه سرور را مصرف کند.
در همین حال، مزایای سرور NGINX شامل عملکرد بالاتر در هنگام رسیدگی به درخواستهای محتوای استاتیک، قابلیت سرویس دهی به بسیاری از مشتریان به طور همزمان، و کارایی منابع است. این موارد وب سرور را برای سایت هایی با صفحات وب پیچیده و حجم ترافیک بالا عالی میکند.
علاوه بر این، NGINX چند منظوره است کاربران می توانند از آن به عنوان یک وب سرور، پروکسی معکوس، لود بالانسر یا راهکار کش استفاده کنند. ولی به طور پیشفرض نمیتواند محتوای داینامیک را پردازش کند و به یک سرور برنامه کاربردی نیاز دارد.
هر دو وب سرور از نظر سازگاری با نرم افزار مشابه هستند. آنها از سیستم عاملهای مختلف و سیستمهای مدیریت محتوا پشتیبانی میکنند که مثلا آنها را برای سایتهای وردپرسی مناسب میکند.
استفاده همزمان از Apache و Nginx
نکتهای که باید هنگام مقایسه Apache و Nginx به خاطر بسپارید این است که همیشه نباید یکی را انتخاب کرد، بسیاری از مدیران این دو را در یک راهکار ترکیبی استفاده میکنند تا از نقاط قوت هر یک استفاده نمایند.
Apache و Nginx ممکن است در کنار هم برای ایجاد یک سرور workload-optimized استفاده شوند. میتوان از Nginx جلوی آپاچی بهعنوان یک پروکسی سرور استفاده کرد که از سرعت پردازش و توانایی Nginx برای مدیریت حجم ترافیک زیاد استفاده کند.
Nginx هنگام ارسال محتوای داینامیک به آپاچی (همانطور که در تصویر زیر نشان داده شده است) محتوای استاتیک را پردازش و ارائه میکند.
Nginx کارهای سنگین مرتبط با HTTP را انجام میدهد فایلهای استاتیک را ارائه میکند، محتوا را در کش میکند و اتصالات HTTP کند را بارگیری میکند، به طوری که سرور آپاچی میتواند کد برنامه را در یک محیط امن و ایمن اجرا کند.
بررسی عملی
اگر بخواهیم آنچه را که وب سایت در production استفاده میکند بررسی کنیم، می توان HTTP response headers را چک کرد. برای این کار روی وبسایت راست کلیک کرده و گزینه Inspect را انتخاب میکنیم. به سربرگ Network رفته و بعد وبسایت را رفرش مینمائیمو تمام منابعی که وب سایت در حال بارگیری است را خواهیم دید. اگر منبع خاصی و تب Headers آن را انتخاب کنیم، معمولا اطلاعات سرور را مشاهده می کنیم. اگر وبسایت از CDN یا از شتابدهنده HTTP استفاده کند، ممکن است چیزی شبیه Cloudflare یا چیزی شبیه Varnish در خط جلوی عبارت server مشاهده شود.
خلاصه
انتخاب وب سرور مناسب برای اطمینان از ایمن بودن و عملکرد خوب VPS شما مهم است. از آنجایی که انتخاب یکی میتواند دشوار باشد، ما دو تا از محبوبترین وب سرورها یعنی NGINX و Apache را با هم مقایسه کردهایم.
به طور خلاصه، آپاچی انعطاف پذیری و طیف گستردهای از ماژولها را ارائه میدهد در حالی که NGINX مقیاس پذیری، سرعت و چندکاره بودن را به عنوان یک سرور پروکسی معکوس را در اختیار میگذارد.
صرف نظر از انتخاب شما، هر دو وب سرور از نرم افزارهای مختلفی پشتیبانی میکنند تا یک پشته وب کامل برای توسعه فراهم کنند، باید به یاد داشته باشیم که همه موارد استفاده اولویتهای یکسانی ندارند و آپاچی یا ابزارهای دیگری مانند Lighttpd، IIS، LiteSpeed، Caddy میتوانند راهکارهای خوبی باشند.