عملکرد پلاگین های NGINX و VARNISH سر راه آپاچی

مدت هاست که استفاده از پلاگین های apache accelerator با هدف افزایش سرعت وب سرور آپاچی و کاهش لود CPU و RAM ناشی از ترافیک سنگین روی وب سرور Apache بسیار رایج شده است . وب سرور آپاچی محبوب ترین وب سرور متن باز و رایگان دنیاست و هنوز هم به تنهایی بیشترین سهم را در میان وب سرور ها به خود اختصاص داده است . بر اساس آمار های ارائه شده در اینترنت ، هنوز هم بیش از۵۰٪ از کل وب سایت های دنیا از وب سرور آپاچی استفاده میکنند . این استفاده گسترده و چشمگیر از Apache Web Server سبب شده است تا بسیاری از تولید کنندگان نرم افزار های تحت لینوکس به فکر ارائه محصولاتی برای افزایش کارایی و پایداری وب سرور آپاچی به خصوص برای کنترل پنل های مشهور سی پنل و دایرکت ادمین بیفتند .

نمودار میزان استفاده از وب سرور ها

نمودار میزان استفاده از وب سرور ها

وب سرور آپاچی به دلیل نوع معماری و طراحی خاصی که دارد ، زیر استرس و ترافیک سنگین و به هنگام هندل کردن درخواست های همزمان بسیار زیاد یا همان concurrent connections مصرف RAM بسیار بالایی دارد و به CPU و پردازنده سرور نیز فشار بسیار زیادی وارد میکند . TUNE کردن و بهینه سازی وب سرور آپاچی بسیار پیچیده است. با توجه به کانفیگ پذیری بسیار بالای وب سرور Apache با داشتن دانش بالا و تسلط به پیکربندی این وب سرور قادر خواهید بود سرعت و مصرف منابع آن را به شکل قابل توجهی بهبود ببخشید . از طرفی تنظیمات پیش فرض وب سرور آپاچی بعد از نصب به هیچ عنوان مناسب میزبانی یک وب سایت بزرگ و پر ترافیک نیست . در واقع Apache HTTP Server Project مجموعه ای از مدل ها ، کد ها و ابزار های کارا و مفید را در اختیار مدیران حرفه ای سرور قرار داده است تا بنا به نوع نیاز  هایشان وب سرور آپاچی را بهینه سازی و کانفیگ کنند . مشکل اینجاست که بیشترمدیران وب سایت ها و وب مستران چنین دانش و تجربه ای ندارند .  از طرفی عدم پشتیبانی بسیاری از کنترل پنل های وب هاستینگ از وب سرور Nginx یا Lighttpd و همچنین عدم پشتیبانی این وب سرور ها از .htaccess سبب شده عده زیادی تمایلی به تغییر وب سرور آپاچی نداشته باشند . مجموعه عوامل فوق سر آغاز تولید نرم افزار ها و پلاگین هایی برای افزایش سرعت و کاهش مصرف منابع وب سرور آپاچی توسط شرکت های مهندسی نرم افزار بوده است .

بهینه سازی و افزایش سرعت و کارایی وب سرور آپاچی

بهینه سازی و افزایش سرعت و کارایی وب سرور آپاچی

پلاگین های Nginx Reverse Proxy

استفاده از Nginx به عنوان یک Reverse Proxy نرم افزاری سر راو وب سرور آپاچی تاثیر بسیار زیادی در افزایش سرعت باز شدن صفحات وب سایت های سرور شما خواهد داشت . اولین پلاگین های تجاری بهینه کننده Apache دقیقا ازهمین تکنیک برای جذب مشتریان استفاده کردند . شعار آن ها افزایش سرعت لود شدن صفحات وب ، کاهش لود سرور و افزایش تحمل وب سرور آپاچی زیر حملات Dos بود . از معروف ترین پلاگین های Nginx بازار وب هاستینگ میتوان به Nginx Admin و cPnginx برای کنترل پنل cPanel و پلاگین Danginx برای دایرکت ادمین اشاره کرد . پلاگین های Nginx شروع تولید این دسته از بهینه ساز های آپاچی بودند و به مرور استفاده از VARNISH CACHE هم در این پلاگین ها رایج شد .

پلاگین های NGINX + VARNISH

این دسته از پلاگین ها ساختار پیچیده تری نسب به پلاگین های سری اول داشته و علاوه بر NGINX از VARNISH HTTP CACHE نیز سر راه وب سرور آپاچی استفاده میکنند . معروف ترین پلاگین nginx + varnish یک پلاگین رایگان به نام apachebooster است که برای سرور های مبتنی بر WHM/cPanel طراحی شده است . از سایر پلاگین های استفاده کننده همزمان از nginx و varnish میتوان به unixy اشاره کرد که شباهت های بسیار زیادی به apachebooster دارد ولی رایگان نیست . unixy علاوه بر سی پنل ، از پنل دایرکت ادمین نیز پشتیبانی میکند و قیمت لایسنس ماهیانه آن نیز گران نیست .

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

عملکرد پلاگین های NGINX و VARNISH سر راه آپاچی

ابتدا به چگونگی عملکرد Nginx به تنهایی و بدون وجود Varnish به عنوان یک Reverse Proxy سر راه Apache می پردازیم . به صورت پیش فرض ، کلیه درخواست های ارسال شده به وب سرور (پورت ۸۰) توسط آپاچی هندل و مدیریت میشوند . با قرار دادن Nginx به عنوان Reverse Proxy سر راه Apache شکل کار کاملا عوض میشود .

نحوه عملکرد nginx به عنوان reverse proxy سر راه آپاچی

ابتدا پورت آپاچی را از ۸۰ به یک پورت غیر استاندارد مثل ۸۰۸۰ تغییر میدهیم و پس از این تغییر Nginx را روی سرور نصب میکنیم . Nginx نیز به صورت دیفالت به پورت ۸۰ گوش میکند . این یعنی ترافیک و درخواست های ارسال شده به سرور اول توسط Nginx بررسی میشوند . اگر محتوای ارسال شده Satatic باشد خود Nginx آن را کش و سپس مدیریت و هندل میکند و فقط محتوای Dynamic است که به وب سرور آپاچی ارجاع داده میشود . این فرایند سبب کم شدن درگیری آپاچی با درخواست های ارسال شده توسط مرورگرو کاربران میگردد . در نتیجه مصرف منابع سرور مانند RAM و CPU به میزان چشم گیری کاهش یافته و سرعت پاسخ به درخواست ها نیز چند برابر سریع تر میگردد . تصویر زیر تفاوت  عملکرد وب سرور آپاچی قبل و بعد از استفاده از  Nginx Reverse Proxy را به خوبی نشان میدهد .

عملکرد وب سرور آپاچی قبل و بعد از استفاده از nginx به عنوانی reverse proxy

عملکرد وب سرور آپاچی قبل و بعد از استفاده از nginx به عنوانی reverse proxy

همانطور که مشاده میکنید  تغییر کاملا محسوس است . تعداد درخواست ها به شکل قابل ملاحظه ای کم شده و سرعت پاسخگویی به درخواست ها  چند برابر سریع  تر شده است . این یعنی کاهش مصرف منابع سخت افزاری سرور و  افزایش سرعت باز شدن صفحات وب  . در ادامه بحث به چگونگی عملکر VARNISH CACHE سر راه آپاچی و بدون حضور nginx reverse proxy میپردازیم .

نحوه عملکرد varnish cache سر راه آپاچی

شباهت ها و البته تفاوت های زیادی بین نحوه عملکرد varnish cache و nginx reverse proxy سر راه وب سرور آپاچی وجود دارد که اغلب سبب گیج شدن مدیران سرور های هاستینگ مبنی بر لینوکس میگردد . شباهت وارنیش کش با انجین اکس به عنوان پراکسی معکوس ، قرار گرفتن سر راه وب سرور و دریافت کلیه درخواست ها در وحله اول است . ولی یک فرق بسیار بزرگ بین نحوه عملکر این دو وجود دارد . nginx محتوای استاتیک را هندل و کش میکند ولی varnish cache برای مدیریت و کش کردن محتوای داینامیک و استاتیک (کش کردن کل صفحه) طراحی و ساخته شده است . بر خلاف انجین اکس ، وارنیش کش فقط برای همین هدف یعنی کش کردن محتوای HTTP به صورت پروکسی معکوس و همچنین لود بالانسینگ طراحی شده است و از یک زبان اسکریپتی با کدی مشابه C و PERL به نام VCL نیز پشتیبانی میکند . بنا بر این بسیار قدرتمند از NGINX عمل کرده و قابلی کنترل همه چیزرا به کانفیگر میدهد .نحوه کار وارنیش به عنوان یک پروکسی معکوس سر راه آپاچی به شرخ زیر است.

با تغییر پورت آپاچی از ۸۰ به یک پورت غیر استاندارد مانند ۸۰۸۰ و تغییر پورت وارنش کش به پورت استاندارد ۸۰ جای آپاچی را با وارنیش عوض میکنیم . با استارت کردن سرویس ورنیش ، ترافیک ورودی اعم از داینامیک و استاتیک توسط varnish cache داخل حافظه یا RAM سرور کش میشوند که نتیجه آن کاهش قابل ملاحظه لود CPU در سرور و همچنین افزایش سرعت لود شدن صفحات وب است .

عملکرد وب سرور آپاچی قبل و بعد از استفاده از varnish cache

عملکرد وب سرور آپاچی قبل و بعد از استفاده از varnish cache

همانطور که در تصویر فوق مشاهده میکنید ، شتاب دهنده HTTP ورنیش عملکرد وب سرور آپاچی را به میزان قابل توجهی بهبود بخشیده است . کاهش  زمان پاسخگویی به درخواست ها ، افزایش سرعت لود شدن صفحات ، کاهش لود سرور و امکان مدیریت کردن صد  ها هزار درخواست توسط آپاچی نتیجه کانفیگ حرفه ای VARNISH CACHE سر راه وب سرور آپاچی است .

 نحوه عملکرد همزمان NGINX و VARNISH CACHE و APACHE

توضیحات فوق شما را با نحوه کار کرد nginx و varnish با apache آشنا کرد. پلاگین nginx مانند cpnginx و nginxcp نیز دقیقا با همین تکنیک کار میکنند . در آخرین قسمت این مبحث به آموزش نحوه عملکرد همزمان وب سرور آپاچی با nginx و varnish میپردازیم . برای درک این موضوع عکس زیر را با دقت نگاه کنید .

عملکرد پلاگین های NGINX و VARNISH سر راه آپاچی

عملکرد پلاگین های NGINX و VARNISH سر راه آپاچی

با نگاه دقیق به عکس فوق متوجه میشویم  در زمان استفاده همزمان nginx و varnish و apache در واقع  nginx را سر راه varnish و varnish را هم سر راه وب سرور آپاچی قرار میدهیم .  شکل سبز رنگ همان درخواست های ارسال شده توسط کاربر است که به پورت ۸۰ ارسال میشوند . این nginx است که به این پورت گوش میدهد . بنا بر این ترافیک ورودی ابتدا به nginx میرسد….nginx در اولین قدم بررسی میکنم که آیا محتوای ترافیک ارسالی از نوع استاتیک است یا داینامیک . محتوای استاتیک مانند عکس های و فایل های css یا js مستقیما توسط خود nginx به سمت یوزر و مرورگر کاربر ارسال میشوند ولی محتوای داینامیک باید مراحل بیشتری را تا رسیدن به دست کاربر طی کند . ngnx محتوای dynamic را به varnish cache تحویل میدهد و کار varnish شروع میشود . اگر محتوای دریافت شده توسط nginx قابل کش شدن باشد ، varnish آن را به صورت html داخل حافظه و ram سرور کش میکندو سپس از داخل حافظه آن را فراخوانی کرده و مجددا به nginx تحویل میدهد . nginx نیز محتوای دریافت شده از حافظه RAM را به کامپیوتر کاربر ارسال میکند . ولی اگر محتوای ارسال شده به وارنیش (توسط NGINX) غیر قابل کش شدن به صورت html باشد وارنیش کش آن را به وب سرور آپاچی ارسال میکند . وب سرور آپاچی پس از مدیریت کردن محتوای ارسال شده توسط MPM (در اینجا آپاچی ۲٫۴ و EVENT MPM) آن را به هندلر یا اجرا کننده PHP ارسال میکند . ممکن است در این فرایند کوئری هایی به MYSQL ارسال شود که در این صورت خروجی آن توسط PHP تحویل گرفته شده و به محتوا اضافه میگردد . این محتوای خروجی هم اکنون قابلیت کش شدن به صورت HTML در حافظ رم را دارد . بنا بر این محتوای ایجاد شده توسط آپاچی و خروجی PHP مجددا به سمت VARNISH ارسال میگردد . وارنیش نیز آن ها رد حافظ رم سرور کش کرد و با فراخوانی مجدد آن ها از RAM به ngnx ارجاع میدهد و در نهایت nginx نیز محتوای ایجاد شده را به مرورگر کاربر و یوزر ارسال میکند .

همانطور که ملاحظه کردید کار همزمان این سرویس ها در کنار apache کمی پیجده بود . نتیجه کار همزمان این ۲ سرویس در کنار وب سرور آپاچی خارق العاده و باور نکردنی خواهد بود . افزایش سرعت و کاهش شدید لود سرور نتیجه این همکاری بین nginx و varnish و apache خواهد بود . پلاگین apachebooster یک پلاگین رایگان و با انعطاف پذیری بالا است که از این تکنیک برای بهینه سازی وب سرور آپاچی بهره میبرد . در صورت نیاز به کانفیگ حرفه ای Reverse Proxy در سرور های لینوکس سر راه وب سرور (کلیه وب سرور ها) با ما تماس بگیرید .

پاسخ به کلیه سوالات شما در زمینه وب هاستینگ و مدیریت سرور در انجمن کامپایلر

One thought on “عملکرد پلاگین های NGINX و VARNISH سر راه آپاچی

  1. سروش صادقی

    سلام وقت به خیر
    عزیز بنده یکی از بازیکنان سایت مسترکاپ هستم و الان چند روزی هستش که سایت http://www.mastercup.varzesh3.com باز نمی شود و پیغام bad gateway می دهد و ما موندیم قضیه از چه قراره منتها در اون صفحه ای که این پیغام رو میده نوشته شده nginx 1.7.3 بنده دانلودش کردم ولی باز هم سایت مربوطه باز نشد راستش خیلی حالم گرفته ست این مشکل برای بالای ۲۰۰ هزار نفراتفاق افتاده و همه ی ما رو گرفتار کرده اگه امکانش هست خودتون به سایت مربوطه برید و مشکل رو از نزدیک ببینید و یه آموزش تصویری برای ما بگذارید
    با تشکر از شما

    Reply

پاسخ دهید

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