به عنوان کسی که صاحب یک استارتاپ یا شرکت هستید انتظارات از شما بسیار بالاست. وبسایت شما باید سریع، امن و تجربه یکسانی را به مشتریهای مختلف ارائه بدهد. در غیر اینصورت بازدید کنندگان شما به مشتری تبدیل نمیشوند و در نهایت ممکن است به صورت همیشگی وبسایت شما را ترک بکنند. به همین دلیل باید از ابزارها و تکنولوژیهای مختلف در جهت بهبود وضعیت وبسایتتان استفاده کنید.
ما در پچیم سعی داریم با ارائه سرویسهای مختلف نهایت پایداری و سرعت وبسایت شما را تضمین کنیم. همچنین با معرفی سرویسهایی دیگر قصد داریم تا مخاطبهایمان با سرویسها، تکنولوژیها و ابزارهای دیگری که با استفاده کردن از آنها میتوانند سرعت و پایداری وبسایتشان را بالاتر ببرند، آشنا کنیم. به همین دلیل در این مطلب قصد داریم شما را به صورت کامل با Reverse Proxy آشنا کنیم. از آنجایی که برای درک عمیق این موضوع نیاز به یکسری موضوعات ابتدایی دارید، اول کار سراغ این دست از موضوعات میرویم و سپس چیستی و چگونه کار کردن Reverse Proxy را به خوبی توضیح میدهیم.
سرور پروکسی یا Proxy Server چیست؟
به زبان بسیار ساده، اینترنت به دو بخش تقسیم میشود، دستگاهها و نرمافزارهایی که کلاینت نامیده میشوند و وبسایتها و فضاهای ذخیرهسازی که ما آنها را سرور مینامیم. زمانی که شما وارد یک وبسایت میشوید، مرورگر شما (کلاینت) یک درخواست را به سرور اصلی وبسایت ارسال میکند، بعد از آن، سرور براساس درخواستی که صورت گرفته یک پاسخ ارائه میدهد که شامل تمام فایلهای مورد نیاز کاربر است که در نهایت در همان مرورگر اصلی به نمایش گذاشته میشود.
اما این تمام ماجرا نیست. درخواستها و پاسخها ممکن است در بین سرورهای دیگری نیز منتشر شود (جدای از سرور اصلی)، به این سرورها، سرور پروکسی یا Proxy Server گفته میشود. برای کوتاه کردن ما در ادامه از کلمه «پروکسی» برای اشاره به این موضوع استفاده میکنیم.
در دنیای شبکههای کامپیوتری، پروکسی یک سرور است که بین کلاینت و سرور (درخواست و پاسخ) قرار گرفته و درخواستها را به سمت سرور اصلی هدایت میکند. ما به این سرور origin میگوییم. پروکسیها در این حالت وظیفه دارند تا درخواست کاربر را دریافت کرده و برای انجام کارهای بعد، یکسری فرایندهای بهینهسازی مانند پایدار کردن سیکل درخواست-پاسخ، بهبود امنیت و سرعت را انجام میدهد.
این شکل از پروکسی را اصطلاحا Forward Proxy نامگذاری کردهاند و در هر جایی که از عبارت Proxy Server استفاده شد بدانید که شما با همان Forward Proxy روبرو هستید. پروکسیهایی از این دست در مقابل یک یا چند کلاینت قرار گرفته و درخواستها و پاسخهای ارسالی و دریافتی را پردازش میکنند. از این طریق، کلاینت هیچگاه به صورت مستقیم با سرورهای دیگر ارتباط برقرار نکرده و تنها به Forward Proxy گوش میدهد.
چندین دلیل برای اینکه چرا یک کلاینت باید از یک Forward Proxy یا همان پروکسی استفاده کند وجود دارد. یکی از اصلیترین این دلایل ناشناس ماندن است. از آنجایی که پروکسی در نهایت مسئول ارسال درخواست به سرور اصلی یا Origin است، کلاینت اصلی که این درخواست را ارسال کرده، شناسایی نمیشود. همچنین از این دست پروکسیها برای مقابله با تحریم و بسته شدن دسترسی کلاینت به سرور اصلی نیز استفاده میشود. در نهایت محافظت کردن از کلاینت در مقابل ترافیکهای مضر، یکی دیگر از وظیفههای پروکسی است. در نهایت آنچه که مهم است بدانید این است که Forward Proxy در اختیار کلاینت بوده و برای انجام کارهای وی به صورت مستقیم، استفاده میشود.
Reverse Proxy چیست؟
Reverse Proxy بر خلاف پروکسی عادی که در مقابل کلاینتها قرار میگیرد، در مقابل یک یا چند سرور اصلی یا Origin قرار گرفته و مسئول پاسخهای سرور است. Reverse Proxy وظیفه دارد درخواستی که به سرور اصلی ارسال میشود را با اضافه کردن یک لایه اضافیِ امنیت و پایداری، بهینهسازی بکند. بعد از اینکار زمانی که سرور اصلی پاسخ را ارسال میکند باز هم از طریق Reverse Proxy این عمل انجام میشود. بنابراین درخواستها و پاسخها از طرف سرور دو بار بررسی میشود.
به عنوان کسی که مدیر وبسایت هستید میتوانید به عنوان یک دروازه یا Gateway بین کلاینت و سرور (وبسایت شما) به Reverse Proxy فکر کنید. از این جهت کلاینت به صورت مستقیم با سرور اصلی شما (سروری که تمام دادههای حساس و کاربردهای اصلی وبسایت شما در آن ذخیره شده است) ارتباط برقرار نکرده و درخواستها ابتدا به سمت Reverse Proxy میروند. این موضوع برای شما که مدیر وبسایت هستید چندین مزیت دارد که در ادامه راجع به آنها صحبت میکنیم.
Forward Proxy و Reverse Proxy در عمل تقریبا شبیه همدیگر هستند اما یکسری تفاوت اساسی نیز وجود دارد. فوروارد پروکسی به کلاینت سرویس میدهد و در اختیار آن است در صورتی که Reverse Proxy در قسمت مربوط به سرور عمل میکند و به همین جهت است از کلمه Reverse (به معنای معکوس) برای این دست از پروکسیها استفاده میشود. Forward Proxy از ارتباط برقرار کردن مستقیم با یک یا چند کلاینت جلوگیری میکند در صورتی که Reverse Proxy این کار را برای یک یا چند سرور Origin انجام میدهد.
یکی از محبوبترین روشها برای پیادهسازی Reverse Proxy استفاده از یک سرویس CDN است. البته راهکارهای دیگری نیز وجود دارد اما از آنجایی که این روش فرایند پیادهسازی و کانفیگ سادهتری داشته بیشتر از این حالت استفاده میکنند.
چرا باید از Reverse Proxy استفاده کنیم؟
حال سوالی که پیش خواهد آمد این است که آیا بهتر نیست همه چیز را سادهتر در نظر بگیریم و بگذاریم که کلاینت و سرور اصلی به صورت مستقیم با همدیگر ارتباط برقرار کنند و لایههای اضافی برای این پروسه ایجاد نکنیم؟ ارزانتر هم خواهد بود!
در جواب این پرسش باید بگوییم که خیر! استفاده کردن از Reverse Proxy باعث میشود تا وبسایت شما با امنیت، پایداری و سرعت بالاتری به کاربرانتان سرویس ارائه دهد و کسب و کار شما هم کمتر در خطر آسیبهای مختلف قرار بگیرد. بیایید با چند مورد از دلایلی که باعث بالا رفتن نرخ این شاخصها میشود آشنا شویم.
تاثیر مستقیم روی Load Balancing
یکی از مزایای استفاده از Reverse Proxy هدایت کردن لود بالانسرهاست. لود بالانسینگ به پروسهای گفته میشود که در آن ترافیک ورودی یک شبکه بین سرورهای مختلف تقسیم و توزیع میشود. این موضوع دسترسی پذیری به منابع را بهتر میکند و کارایی وبسایت را افزایش میدهد.
اگر وبسایت شما روزانه یک میلیون بازدید کننده داشته باشد یک سرور نمیتواند همه کارها را انجام دهد و به همین دلیل است که این میزان از درخواست بین سرورهای دیگر نیز تقسیم میشود. در این بخش Reverse Proxy وظیفه دارد تا درخواستها را به بهترین سرورها از لحاظ منابع و فاکتورهایی دیگر ارسال کند. به همین دلیل حضور یک پروکسی میتواند در انجام بهتر کارها به Load Balancer کمک بکند.
امنیت
از آنجایی که Reverse Proxy بین کلاینت و سرور اصلی قرار میگیرد پس در واقع یک لایه امنیتی جدید را میتواند ایجاد کند. سرور Origin حاوی تمام دادهها و اطلاعاتیست که وبسایت شما را زنده نگه میدارد، از این رو یک ارتباط مستقیم بین کلاینت و سرور ممکن است از امنیت خوبی برخوردار نباشد و بتواند آسیبپذیریهایی به کلیت ساختار وارد بکند. در چنین وضعیتی انجام عملیاتهایی مانند Data Breach یا Data Injection میتواند وبسایت شما را تهدید بکند. همچنین Reverse Proxy میتواند در برابر عملیاتهایی مانند DDoS بهتر درخواستها را مدیریت کرده و شانس آسیبپذیری را کاهش دهد.
همچنین از آنجایی که Reverse Proxy ها میتوانند پیکربندی شوند، شما میتوانید نرمافزارهای امنیتی را روی آنها نصب کرده و مطمئن شوید که درخواستهای ورودی برای سرور اصلی مشکلی ایجاد نمیکنند. حتی میتوانید یکسری آیپی را مسدود کرده و به صورت خودکار درخواست آنها را به یک صفحه دیگر هدایت کنید.
سرعت
صاحبان وبسایت میتوانند روی Reverse Proxy برای بهبود سرعت بارگذاری محتوا و کارایی کلی وبسایت حساب باز کنند. برای مثال میتوانید پروکسی را به گونهای پیکربندی کنید که اطلاعات درخواستی را به صورت فشردهسازی شده به کلاینتها تحویل دهد. این موضوع فرایند و سیکل درخواست و پاسخ را سریعتر میکند.
همچنین سرورهای Reverse Proxy قابلیت کش کردن محتوا و ارائه آن براساس موقعیت جغرافیایی کاربر را دارند. در واقع این همان ویژگیهای یک CDN یا شبکه توزیع محتواست. در این صورت شما میتوانید برخی از درخواستهای تکراری را در محیط پروکسی کش کرده و نیازی نباشد هر بار به سرور اصلی ارجاع بدهید. همچنین تحویل سریع محتوا براساس نقطه جغرافیایی حضور کار میتواند یک نکته مثبت در جریان بهینه بودن وبسایتتان باشد.
SSL/TLS
ایجاد یک ارتباط رمزنگاری شده برای هر درخواست توسط سرور اصلی، فشار نسبتا زیادی را ایجاد میکند و به همین دلیل استفاده از یک پروکسی که این کار را به صورت خودکار انجام بدهد میتواند بسیار مفید باشد. یک Reverse Proxy این توانایی را دارد که تمام درخواستهای ورودی را رمزگشایی یا Decrypt کرده و تمام پاسخهای ارسالی را نیز رمزنگاری یا Encrypt بکند. این موضوع در نهایت باعث میشود که منابع کمتری در سمت سرور Origin مصرف شود.
تعمیر و بروزرسانی
زمانی که شما چندین سرور اصلی داشته باشید و بخواهید عملیات تعمیر و بروزرسانی را انجام دهید، برای اینکه وبسایتتان با کمترین نرخ Downtime روبرو شود، استفاده از Reverse Proxy بسیار مفید خواهد بود. در این حالت، پروکسی درخواستهای ورودی را به سمت یک سرور اصلی که پایدار است هدایت میکند و در همان زمان سرورهای دیگر میتوانند فرایند تعمیر یا بروزرسانی را انجام دهند. این کارها بدون اینکه کلاینتها از اینکه سایت در دست تعمیر و بروزرسانی است خبردار شوند انجام میشود.
جمعبندی
مطمئنا اولین باری که با عبارت Reverse Proxy روبرو میشوید منتظر یک تکنولوژی پیچیده و رمزآلود هستید اما همانطور که مطالعه کردید، مطمئنا متوجه شدید که این دست از پروکسیها نیز کار نسبتا سادهای (در نهایت) انجام میدهند و درک الگوریتم کاری آنها پیچیده نخواهد بود. البته به عنوان کسی که قرار است چنین زیرساختی را ایجاد کند قضیه به شکل دیگری خواهد بود و همه چیز به این آسانیها هم نیست. اما اگر شما به عنوان یک مدیر وبسایت از سرویسهایی مانند CDN یا Cloud Base استفاده کنید، در اختیار گرفتن چنین پروکسیهایی بسیار ساده خواهد بود.
در این مطلب از وبسایت پچیم ما با دو نوع اصلی پروکسی یعنی Forward Proxy و Reverse Proxy آشنا شدیم. همچنین به صورت تخصصی شیوه کار پروکسی معکوس یا Reverse Proxy را دیدیم و با مزایا و ضرورتهای استفاده از آن نیز آشنایی پیدا کردیم.