مدیران سایتهایی که از ترافیک بالایی برخوردارند همواره این دغدغه را دارند که چگونه و به چه شکل میتوانند سرعت لود سایت خود را افزایش دهند که در چنین شرایطی یکی از چیزهایی که کمک میکند پرفورمنس سایت بهبود یابد این است که وب سرور باید به اندازهٔ کافی قدرتمند باشد تا از پس تعداد زیادی ریکوئست برآید و اینجا است که پای Reverse Proxy به میان میآید.
Web Server چیست؟
در ابتدا نیاز است تا مقدمهای کوتاه در مورد ماهیت Web Server ذکر کنیم که اصولاً وب سرور چیست و چه وظیفهای دارا است؟ خیلی از کسانی که تازه با دنیای وب و برنامهنویسی وب آشنا میشوند با قضاوت از روی نامش تصور میکنند که منظور از وب سرور نوعی سختافزار است!
به طور کلی، منظور از Web Server نرمافزاری است که ارتباط مابین کاربر، دیتابیس و همچنین اسکریپتهایی که یک وب اپلیکیشن با آن نوشته شده را برقرار میسازد که این وظیفه را دارا است تا ریسپانس مناسب برای ریکوئست کاربر را یافته و به شکل مناسبی در اختیار وی قرار دهد (برای کسب اطلاعات بیشتر، میتوانید به آموزش آشنایی با وب سرور و نحوهٔ عملکرد آن مراجعه نمایید.) به طور خلاصه، وب سرور یک نرمافزار است که روی سرور نصب میگردد و از جملهٔ پرکاربردترین وب سرورهای دنیا هم میتوان به IIS ،Apache و Nginx اشاره کرد.
Nginx چیست؟
به طور کلی، اگر بخواهیم که یک وب اپلیکیشن بسیار سریع توسعه دهیم، باید سایت خود را به صورت ماژولهایی مستقل از یکدیگر اما در عین حال مرتبط طراحی کنیم و اینجا است که وب سرور Nginx (تلفظ شود اِنجینایکس) به خوبی از عهدهٔ مدیریت چنین سایتی برخواهد آمد. اِنجینایکس سبک، رایگان و اپنسورس است که علاوه بر انجام کارهایی که یک وب سرور معمولی مثل آپاچی انجام میدهد، یک سرور Mail Proxy نیز میباشد مضاف بر اینکه میتوان از آن به عنوان Reverse Proxy نیز استفاده نمود (به طور کلی، منظور از Reverse Proxy نوعی از پروکسی سرور است که منابع مورد نیاز را از یک یا چند سرور مختلف دریافت کرده و در اختیار کاربر قرار میدهد.)
استفاده از Reverse Proxy از اهمیت بسزایی در ارتقاء سرعت سایت برخوردار است چرا که این نوع نرمافزار حائلی مابین کاربر و سرور اصلی خواهد شد، میزان حجم لود را پخش میکند، محتوا را کش/فشرده میسازد و همچنین فرایند ریکوئست/ریسپانس (درخواست/پاسخ) را به خوبی مدیریت میکند.
در پاسخ به این پرسش که تفاوت اِنجینایکس با وب سروی همچون آپاچی چیست، میتوان گفت که اِنجینایکس رویداد-محور و نامتقارن است اما این در حالی است که وب سرور آپاچی کاملاً بر پایهٔ تِرِدها کار میکند (در وب سروری که ترافیک نسبتاً بالایی وجود دارد، تِرِدها منجر به فشار آوردن بر حافظهٔ سرور میشوند که در نهایت ممکن است با کمبود رَم مواجه شویم.) در چنین مسابقهای، مسلماً اِنجینایکس برنده است.
همانطور که در تصویر فوق مشخص است، هر Worker در Nginx این قابلیت را دارا است تا چندین هزار کانکشن را مدیریت کند. در واقع، سازوکار این وب سرور بدین صورت است که ابتدا ریکوئستی از جنس HTTP دریافت میکند سپس بر اساس تنظیمات صورت گرفته، فاز مرتبط با ریکوئست مد نظر را انتخاب میکند و در ادامه سروری مرتبط با ریکوئست کاربر انتخاب شده و خروجی آن از چندین فیلتر عبور میکند و در نهایت نتیجه برای مرورگر کاربر ارسال میگردد.