انجین ایکس یا آپاچی: آشنایی با نحوهٔ عملکرد پروکسی سرور Nginx

انجین ایکس یا آپاچی: آشنایی با نحوهٔ عملکرد پروکسی سرور Nginx

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

وب‌ سرور چیست؟
پیش از ادامهٔ مطلب، نیاز است تا مقدمه‌ای کوتاه در مورد ماهیت وب‌ سرور ذکر کنیم که اصولاً وب سرور چیست و چه وظیفه‌ای دارا است؟ خیلی از کسانی که تازه با دنیای وب و برنامه‌نویسی وب آشنا می‌شوند با قضاوت از روی نام «وب سرور» تصور می‌کنند که منظور از وب سرور، یک سرور سخت‌افزاری است که این کاملاً اشتباه است.

به طور کلی، منظور از وب سرور نرم‌افزاری است که ارتباط مابین کاربر، دیتابیس و همچنین اسکریپت‌هایی که یک وب اپلیکیشن با آن نوشته شده را برقرار می‌سازد که این وظیفه را دارا است تا پاسخ مناسب برای ریکوئست‌های کاربران را یافته و به شکل مناسبی در اختیار ایشان قرار دهد (تا اینجای کار متوجه شدیم که وب سرور یک نرم‌افزار است که روی سرور نصب می‌گردد و پرکاربردترین وب سرور دنیا نیز آپاچی نام دارد).

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

این وب سرور سبک، رایگان و اپن‌سورس است که علاوه بر انجام کارهایی که یک وب سرور معمولی انجام می‌دهد، یک سرور Mail Proxy نیز می‌باشد. از این وب سرور می‌توان به جای وب سرورهایی همچون آپاچی نیز استفاده کرد و یا اینکه می‌توان از آن به عنوان Reverse-proxy هم استفاده کرد (به طور کلی، منظور از Reverse-proxy نوعی از پروکسی سرور است که منابع مورد نیاز را از یک یا چند سرور مختلف دریافت کرده و در اختیار کاربر قرار می‌دهد).

استفاده از Reverse-proxy از اهمیت بسزایی در ارتقاء سرعت سایت برخوردار است چرا که این نوع پروکسی حائلی مابین کاربر و سرور اصلی خواهد شد،‌ میزان حجم لود را پخش می‌کند، محتوا را کش/فشرده می‌سازد و همچنین فرایند درخواست/پاسخ را مدیریت می‌کند.

 انجین ایکس یا آپاچی: آشنایی با نحوهٔ عملکرد پروکسی سرور Nginx

در پاسخ به این سؤال که تفاوت انجین‌ایکس با وب سروی همچون آپاچی چیست، می‌بایست گفت که انجین‌ایکس رویداد-محور و نامتقارن است اما این در حالی است که وب سرور آپاچی کاملاً بر پایهٔ تِرِدها کار می‌کند (در وب سروری که ترافیک نسبتاً بالایی وجود دارد، Threadها منجر به فشار آوردن بر حافظهٔ سرور می‌شوند که در نهایت ممکن است با کمبود رَم مواجه شویم). در چنین مسابقه‌ای، مسلماً انجین‌ایکس برنده است.

 انجین ایکس یا آپاچی: آشنایی با نحوهٔ عملکرد پروکسی سرور Nginx

همان‌طور که در تصویر فوق مشخص است، هر Worker در انجین‌ایکس این قابلیت را دارا است تا چندین هزار کانکشن را مدیریت کند؛ در واقع، سازوکار انجین‌ایکس به این صورت است که ابتدا ریکوئست HTTP کاربر را دریافت می‌کند سپس بر اساس تنظیمات صورت گرفته، انجین‌ایکس فاز مرتبط با ریکوئست مد نظر را انتخاب می‌کند و در ادامه، سروری مرتبط با ریکوئست کاربر انتخاب شده و خروجی آن از چندین فیلتر عبور می‌کند و در نهایت نتیجه برای مرورگر کاربر ارسال می‌گردد.