صفحه اصلی

بررسی تفاوت های وب سرور Apache و NGINX – قسمت سوم

۰۱ دی ۱۳۹۸

در قسمت قبلی این آموزش به بررسی تفاوت های Apache و NGINX پرداختیم و به این نتیجه رسیدیم که NGINX به نحوی برای وب سرور هایی که تعداد درخواست ها و ارتباطات بالا است بسیار مناسب می باشد و از طرف دیگر Apache در سرور هایی که تعداد درخواست ها کمتر است، مناسب تر است. در این آموزش این دو وب سرور را از جهات دیگر مقایسه می کنیم.

پشتیبانی از سیستم عامل

Apache روی همه سیستم عامل ها از قبیل UNIX، Linux، BSD و ویندوز قابل پیاده سازی است. از طرف دیگر NGINX نیز روی انواع سیستم های یونیکسی اجرا می شود، علاوه بر آن روی ویندوز نیز پیشتیبانی می شود اما کارایی آن روی ویندوز در مقایسه با پلتفرم های یونیکسی به مراتب کاهش می یابد.

امنیت

هر دو وب سرور Apache و Nginx بسیار امن هستند. تیم امنیتی Apache Security Team به مشکلات امنیتی کاربران پاسخ می دهد و با توسعه دهندگان برای کنترل آسیب پذیری ها همکاری می کند.

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

شخصی سازی و انعطاف پذیری

بسیاری از کاربران Apache از فایل .htaccess استفاده می کنند و پیکربندی های متنوعی روی وب سرور از قبیل قوانین ریدایرکت کردن، حفاظت از رمز عبور، لیست کردن دایرکتوری، ایجاد محدود سازی کاربران، نمایش صفحات خطای شخصی سازی شده و… را پیاده سازی می کنند. در مقابل NGINX چنین ابزاری را ندارد.

Apache علاوه بر آن بیش از 60 ماژول مختلف دارد که کار پیکربندی سرور را راحت تر می کند. برخی از ماژول های مهم Apache را می توان Mod_scurity، Mod_rewrite، Mod_cache و… عنوان کرد.

Mod_security برای امنیت کاربرد دارد و مشابه فایروال کار می کند.

Mod_rewrite برای rewrite کردن URL است که در نتیجه آن می توان قابلیت ریدایرکت کردن URL های خاص را به شما ارائه دهد.

Mod_cache: از این ماژول برای کش کردن استفاده می شود.

در آموزش های بعدی به بررسی بقیه ماژول های مهم Apache می پردازیم.

به این قابلیت آپاچی، Directory Level Configuration گفته می شود. این قابلیت علاوه بر ویژگی های مهمی که به مدیر وب سرور می دهد، اما در مقابل استفاده از آن می تواند کارایی سرور را کاهش دهد. پس بهتر است با دقت و با دانش از این قابلیت استفاده کنید.

Apache علاوه بر موارد فوق انجمن های فعال و گسترده تری دارد. بنابراین در صورت بروز هر گونه سوال یا مشکل می توانید به این انجمن مراجعه کنید و مشکل سرور را متوجه شوید.

بنابراین با توجه به مطالب فوق که درباره شخصی سازی و انعطاف پذیری این دو وب سرور که بیان کردیم، می توان گفت که Apache از این نظر بهتر است.

Load Balance کردن (متعادل سازی لود)

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

Nginx به سادگی به عنوان Load balancer پیکربندی می شود تا ترافیک وب را جمع کند و بین چندین وب سرور پخش نماید و خروجی را استخراج کند.

NGINX صفحات ایستا (static) را خودش پردازش می کند و صفحات پویا (Dynamic) را به وب سرور مناسب ارسال می کند. load balancing منجر به بهبود سرعت وب سایت می شود، بدون این که هیچ گونه سرباری برای منابع ایجاد کند.

با پیکربندی Caching در NGINX می توانیم Load Balancer را به گونه ای پیکربندی کنیم که تاخیر را کاهش و کارایی را افزایش دهیم. در مقابل Apache مکانیزم load balance ندارد که از load balancer های ثالث می توان برای آن استفاده کرد. البته NGINX از آنجایی که Load Balancer است، می تواند در کنار Apache مورد استفاده قرار گیرد.

استفاده از NGINX و Apache با هم

بالاتر گفتیم که NGINX یک Load Balancer بسیار قدرتمند است که می تواند با انواع وب سرور ها ترکیب شود و وظیفه بالانس لود را بر عهده گیرد. بنابراین می توانیم Apache و NGINX را کنار هم استفاده کنیم. یکی از بهترین رویکرد ها برای وب سرور ها قرار دادن NGINX در جلوی Apache و استفاده از آن به عنوان reverse proxy است. در این صورت درخواست های ایستا (static) که به سرور ارسال می شوند را NGINX پردازش می کند و در مقابل درخواست های Dynamic (پویا) از طرف NGINX به Apache ارسال می شوند و بعد از پردازش به وسیله Apache به NGINX بر می گردند و NGINX نیز نتیجه را به کاربر می دهد (در قسمت قبلی آموزش دیدیم که پردازش درخواست های Dynamic این دو وب سرور تفاوت چندانی با هم نداشت).

این رویکرد برای صاحبان وب سایت هایی مناسب است که می خواهند برخی از درخواست ها به Apache را از طریق NGINX پاسخ دهند و در مقابل از قابلیت های متعدد Apache استفاده کنند.

نتیجه گیری

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

 

دسته بندی ها : سرور
برچسب ها :

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *