سلب مسئولیت مطالب رپورتاژ آگهی: مجموعه‌ی «فرادرس» در تهیه‌ و تنظیم این محتوای تبلیغاتی نقشی نداشته و مسئولیتی راجع به صحت آن نمی‌پذیرد.

وب‌سرورهای Apache و Nginx دو ابزار رایگان و قدرتمند برای میزبانی ‌وب‌سایت‌ها هستند که هر کدام ویژگی‌های متفاوتی در معماری و نحوه پاسخ‌گویی به درخواست‌ها دارند.‌ با استفاده از سرور مجازی اقتصادی و پرسرعت Blueserver، می‌توانید این وب‌سرورها را راه‌اندازی کنید.

فهرست مطالب این نوشته
997696

در یک توصیف کلی از این دو وب‌سرور می‌توان گفت Apache از مدل پردازشی مبتنی بر فرآیند یا نخ استفاده می‌کند، یعنی برای هر اتصال جدید، یک فرآیند یا نخ جدید ایجاد می‌شود. این مدل در بارهای کم تا متوسط عملکرد مناسبی دارد، اما در مواجهه با تعداد زیادی اتصال همزمان، باعث افزایش مصرف منابع سیستم می‌شود. اما Nginx، از سال ۲۰۰۴، برای حل مشکل C10K (مدیریت همزمان ۱۰۰۰۰ ارتباط) طراحی شده و به دلیل عملکرد بالا و مصرف کم منابع، محبوبیت زیادی دارد. وب سرور Nginx از معماری غیرهمزمان مبتنی بر رویداد استفاده می‌کند. این ساختار به Nginx اجازه می‌دهد تا هزاران اتصال همزمان را با مصرف منابع کمتر مدیریت کند که آن را برای سرویس‌دهی به محتوای ایستا و بارهای بالا مناسب می‌کند.

نصب و اجرای وب سرور Apache و Nginx روی vps ارزان بلوسرور

برای اجرای Apache یا Nginx، نیاز به یک سرور مجازی (VPS) قدرتمند و ارزان دارید. سرور مجازی Blueserver.ir با منابعی مانند 4GB RAM و 2Core CPU و استفاده از دیتاسنترهای معتبر و با‌کیفیت که با قیمت ارزان از آلمان ارائه می‌شود، گزینه‌ای مناسب برای نصب و راه اندازی وب سرور است. با خرید vps ارزان بلوسرور می‌توانید Apache یا Nginx را روی سرور خود نصب کرده و وب ‌سایت خود را مدیریت کنید.

نصب Apache روی اوبونتو با دستور «sudo apt install apache2» و فعال‌سازی آن با دستور «sudo systemctl enable apache2» انجام می‌شود. برای Nginx، از دستور «sudo apt install nginx» استفاده می‌کنیم و فعالسازی آن نیز با دستور «sudo systemctl enable nginx» انجام می‌شود. پس از نصب، می‌توانید با وارد کردن آدرس IP سرور در مرورگر، از اجرای وب‌سرور مطمئن شوید. سرورهای بلوسرور شامل پشتیبانی در تمام هفته، امنیت قوی و منابع قابل ارتقا هستند که برای میزبانی وب‌سایت‌های مختلف مناسب هستند.

مقایسه عملکرد وب سرور Apache و Nginx روی سرور مجازی بلوسرور

نتایج تستی که به صورت تجربی برای مقایسه وب سرور Apache و Nginx روی سرور مجازی بلوسرور انجام شده است و عملکرد وب سرورها را در پلن CPX11 ابری دیتاسنتر هتزنر با منابع 2Core CPU و 2GB RAM مورد بررسی قرار داده، نشان می‌دهد Nginx در بارهای بالا پایدارتر است، اما Apache زمان پاسخ سریع‌تری دارد، به‌خصوص اگر کش فعال باشد. البته این وب‌سرور ممکن است در بارهای سنگین زودتر با مشکل مواجه می‌شود. در ادامه، عملکرد Apache و NGINX را در سناریوهای مختلف با یکدیگر مقایسه کرده‌ایم.

بدون فعالسازی کش

در حالت فعال نبودن کش، مقایسه این دو وب‌سرور نتایج زیر را نشان می‌دهد:

  • Apache: میانگین زمان پاسخ دهی ۴۰۸۳ میلی ثانیه در ۳۵۰ درخواست/ثانیه و ۵۲۴۴ میلی ثانیه در ۷۰۰ درخواست/ثانیه است. مصرف CPU به ۱۰۰% می‌رسد و در بارهای بالا با وقفه (timeout) مواجه می‌شود.
  • NGINX: عملکرد مشابه Apache با میانگین زمان پاسخ‌دهی ۴۴۲۲ میلی ثانیه و ۵۲۵۴ میلی ثانیه در تست‌های مشابه دیده شده است. با این حال، این وب‌سرور مقاومت کمی بهتر در برابر timeout دارد (تا ۴۱۰ درخواست/ثانیه).

با فعالسازی کش (WP Fastest Cache)

در صورت فعالسازی کش، نتایج مقایسه این دو وب‌سرور به صورت زیر بیان می‌شوند:

  • Apache: بهبود قابل توجه با میانگین زمان پاسخ دهی ۱۸۴ میلی ثانیه قابل مشاهده است، اما همچنان محدودیت در تحمل بار بالا (timeout در ۲۷۵ درخواست/ثانیه) وجود دارد.
  • NGINX: میانگین زمان پاسخ دهی ۵۲۶ میلی ثانیه در تست ۳۵۰ درخواست/ثانیه و ۱۰۵۰ میلی ثانیه در تست ۷۰۰ درخواست/ثانیه مشاهده شده است، اما توانایی مدیریت بار بیشتر تا ۶۹۰ درخواست/ثانیه قبل از timeout دیده می‌شود.

از این مقایسه می‌توان اینطور نتیجه‌گیری کرد که وب‌سرور Apache در محیط‌های با ترافیک متوسط و محتوای پویا (مانند وردپرس) عملکرد بهتری دارد، اما در بارهای سنگین دچار محدودیت می‌شود. درحالی‌که NGINX در مدیریت همزمانی بالاتر و ترافیک سنگین‌تر انعطاف‌پذیرتر است، ولی به تنظیمات دقیق‌تری نیاز دارد.

نمای گرافیکی سرورهای آپاچی و nginx

مقایسه معماری و مدیریت ارتباطات

Apache از مدل فرآیند محور با ماژول‌های پردازش چندگانه (MPM) استفاده می‌کند. MPM‌-های مختلف این وب‌سرور شامل موارد زیر هستند:

  • prefork: یک فرآیند برای هر ارتباط
  • worker: چند رشته در هر فرآیند
  • event: بهینه برای ارتباط‌های طولانی

این انعطاف‌پذیری به Apache اجازه می‌دهد تا بتواند با نیازهای مختلف سازگاری پیدا کند. با این حال، امکان مصرف بیشتر منابع، خصوصادر زمانی‌که بار سرور و درخواست‌ها افزایش پیدا می‌کند، وجود دارد. در مقابل، Nginx از معماری غیرهمزمان، مبتنی بر رویداد و غیرمسدودساز استفاده می‌کند. در این وب‌سرور یک فرآیند اصلی مسئول مدیریت چندین فرآیند کارگر است که هر کدام قادر به پردازش هزاران ارتباط همزمان هستند. این طراحی به Nginx امکان می‌دهد با کمترین مصرف CPU و حافظه، بارهای سنگین را مدیریت کند که آن را برای وب‌سایت‌های پرترافیک مناسب می‌کند.

عملکرد در پردازش محتوای استاتیک و پویا

Apache قادر به ارائه خدمات هر دو نوع محتوای استاتیک (مثل تصاویر، فایل‌های HTML و CSS) و پویا (مثل اسکریپت‌‌های PHP یا Perl) بدون نیاز به ابزارهای خارجی پردازشی مثل PHP-FPM است. این وب‌سرور برای محتوای پویا، می‌تواند تفسیرگرهایی مانند PHP را مستقیما در فرآیندهای کارگر خود تعبیه کند (مانند mod_php)، که با وجود ساده کردن فرآیند راه‌اندازی، ممکن است مصرف حافظه را افزایش دهد.

در روی دیگر سکه، Nginx برای خدمات محتوای استاتیک بهینه‌سازی شده است و برای محتوای پویا، به عنوان یک پراکسی معکوس عمل می‌کند و درخواست‌ها را به برنامه‌های خارجی مانند PHP-FPM منتقل می‌کند. این جدایی می‌تواند عملکرد را بهبود بخشد، زیرا پردازش محتوای پویا به سرورهای تخصصی منتقل می‌شود. به طور کلی، Nginx برای محتوای استاتیک سریع‌تر و کارآمدتر است، در‌حالی‌که Apache برای پردازش محتوای پویا به صورت داخلی مناسب‌تر است.

انواع کاربرد و انتخاب بین Apache و Nginx

سرور Apache برای پروژه‌هایی مانند هاستینگ اشتراکی که نیاز به انعطاف و سادگی در تنظیمات دارند، مناسب‌تر است و برای کاربردهایی که از فایل‌های .htaccess  استفاده می‌کنند، کارایی بالایی دارد. همچنین برای سیستم‌های قدیمی یا موقعیت‌هایی که پردازش داخلی محتوای پویا مورد نیاز است، مناسب است. در مقابل، وب‌سرور Nginx برای ‌سایت‌های با ترافیک بالا، شبکه‌های توزیع محتوا (CDN) و کاربردهایی که محتوای استاتیک زیادی دارند، انتخاب مناسبی است.

برای ارائه APIهای مبتنی بر HTTP (مثلا REST/JSON)، معمولا تعداد زیادی درخواست کوچک همزمان ایجاد می‌شود. معماری هم‌زمان Nginx برای این سناریو مناسب‌تر است، زیرا می‌تواند اتصال‌های متعدد را با سربار اندکی مدیریت کند. اغلب برنامه‌های تحت وب، فریم‌ورک‌های بک‌اند (مانند Node.js و Django و Flask) را در پشت Nginx قرار می‌دهند. به این صورت که Nginx خود به عنوان پراکسی معکوس عمل کرده و درخواست‌ها را به سرورهای اپلیکیشن می‌فرستد. Apache نیز می‌تواند API را ارائه دهد، اما بسته به MPM و تنظیمات، در بارهای بسیار بالا ممکن است در مقایسه با Nginx کارایی کمتری داشته باشد.

نمای گرافیکی سرورهای آپاچی و nginx

مقایسه امنیت Apache و Nginx

هر دو سرور Apache و Nginx دارای مکانیزم‌هایی برای مقابله با حملات هستند. سرور Apache تنظیماتی مانند «TimeOut» و «RequestReadTimeout» و «KeepAliveTimeout» را ارائه می‌دهد که می‌توانند برای مقابله با حملات DoS استفاده شوند. Nginx نیز ویژگی‌هایی مثل محدودیت نرخ درخواست (Rate Limiting) دارد که می‌تواند سرعت ورود درخواست‌ها را کنترل کرده و در برابر حملات DDoS و بار زیاد از سرور محافظت کند.

علاوه بر این، در Nginx می‌توان بر اساس IP یا سایر شرایط، دسترسی را مسدود یا مجاز کرد (مثلا از قابلیت‌های allow و deny استفاده کرد). در مجموع، امنیت هر دو سرور به صحیح بودن اعمال پیکربندی و به‌روز نگه‌داشتن نرم‌افزار بستگی دارد، اما Nginx با طراحی lean و تعداد کمتر ماژول‌های داینامیک، معمولا در مقابل آسیب‌پذیری‌های ناشی از افزونه‌های شخص ثالث وضعیت بهتری دارد.

برای میزبانی پروژه‌های خود، می‌توانید از خدمات VPS ارزان بلوسرور با کیفیت بالا و هزینه مناسب و قابلیت ابری (Cloud) استفاده کنید. این سرویس‌ها با ارائه منابع اختصاصی و پشتیبانی فنی، بستری مناسب برای اجرای وب ‌سرورهای Apache یا Nginx فراهم می‌کنند.

دانلود PDF مقاله


source

توسط expressjs.ir