در این نوشته پروکسی سرور را تعریف میکنیم، به اینکه Reverse Proxy چیست پاسخ میدهیم، تفاوتهای میان Forward Proxy و Reverse Proxy را شرح میدهیم و مزایای استفاده از Reverse Proxy را بیان میکنیم.
Reverse Proxy چیست؟
ریوِرس پروکسی یا پروکسی معکوس (Reverse Proxy)، سرویسدهندهای است که جلوتر از وب سرورها قرار میگیرد و درخواستهای کاربران (مثل مرورگر وب) را به آن وب سرورها هدایت میکند. Reverse Proxy معمولاً برای افزایش امنیت، عملکرد و قابلیت اطمینان بهکار گرفته میشود. برای درک بهتر نحوه عملکرد پراکسی معکوس و مزایای آن، ابتدا باید تعریف «پروکسی سرور» (Proxy Server) را بدانیم.
پروکسی سرور چیست؟
«فوروارد پروکسی» (Forward Proxy) که اغلب به آن «پروکسی»، «پروکسی سرور» یا «وب پروکسی» میگویند، سرویسدهندهای است که در مقابل گروهی از ماشینهای کاربر قرار میگیرد. زمانی که این کامپیوترها درخواستهایی را به سایتها و سرویسهای اینترنتی ارسال میکنند، سرور پروکسی این درخواستها را دریافت و مانند واسطه بهجای کاربران با سرورهای وب ارتباط برقرار میکند. بهعنوان مثال، فرض کنید ۳ کامپیوتر در ارتباط پروکسی معمولی دخیل هستند:
- A رایانه خانگی کاربر
- B سرور پروکسی
- C سرور اصلی وبسایت (جایی که دادههای وبسایت ذخیره شدهاند)
در ارتباط معمولی اینترنتی، کامپیوتر A مستقیماً با C ارتباط برقرار میکند؛ کلاینت درخواستها را به سرور اصلی ارسال و سرور اصلی پاسخها را به کلاینت میفرستد. اما با وجود یک پروکسی، A درخواستها را به B میفرستد، B آنها را به C انتقال میدهد، C پاسخها را به B میفرستد و B آنها را به A باز میگرداند.
چرا از پروکسی سرور استفاده میکنیم؟
شاید بپرسید چرا باید یک واسطه اضافی به فعالیتهای اینترنتی خود اضافه کنیم؟ دلایل مختلفی برای استفاده از پروکسی سرورها وجود دارد، از جمله:
- دور زدن محدودیتهای اینترنتی: برخی از دولتها، مدارس و سازمانها از فایروالها برای محدود کردن دسترسی کاربران به اینترنت استفاده میکنند. با استفاده از پروکسی سرور، میتوان از این محدودیتها عبور کرد. بهجای اتصال مستقیم به وبسایتها، به پروکسی متصل میشوید و پروکسی به وبسایت مورد نظر شما وصل میشود.
- مسدود کردن محتوای خاص: در مقابل، میتوان از پروکسیها برای مسدود کردن دسترسی گروهی از کاربران به وبسایتهای خاص استفاده کرد. بهعنوان مثال، شبکه مدرسهای ممکن است به گونهای تنظیم شود که از طریق پروکسی به وب متصل شود و از این راه قوانین فیلترینگ محتوا را اعمال کند. مثلاً از فوروارد کردن پاسخها از فیسبوک و سایر شبکههای اجتماعی خودداری شود.
- محافظت از حریم خصوصی: در برخی موارد، کاربران عادی اینترنت به دنبال افزایش ناشناس بودن خود در فضای آنلاین هستند. اما در موارد دیگر، کاربران اینترنت در کشورهایی زندگی میکنند که دولت میتواند مجازاتهای شدیدی را برای مخالفان سیاسی اعمال کند. انتقاد از دولت در یک انجمن وب یا در شبکههای اجتماعی میتواند منجر به جریمه یا حبس برای این کاربران شود. اگر مخالفان از پروکسی سرور برای اتصال به وبسایتی که در آن نظرات سیاسی حساس خود را ارسال میکند استفاده کند، ردیابی آدرس IP مورد استفاده برای ارسال نظرات به او دشوارتر خواهد بود. فقط آدرس IP سرور پروکسی قابل مشاهده خواهد بود.
تفاوت پروکسی معکوس با پروکسی معمولی چیست؟
پروکسی معکوس برخلاف پروکسی معمولی که بین کاربر و اینترنت قرار میگیرد، بین «سرور اصلی» (Origin Server) و اینترنت قرار میگیرد. به عبارت دیگر، درخواستهای کاربران را قبل از رسیدن به سرور اصلی رهگیری میکند و بهجای سرور اصلی به آنها پاسخ میدهد.
تفاوت ظریف اما مهمی بین این ۲ نوع پروکسی وجود دارد. به طور خلاصه، پروکسی معمولی مانع از برقراری ارتباط مستقیم سرور اصلی با هر کاربر میشود، در حالی که پروکسی معکوس مانع از برقراری ارتباط مستقیم هر کاربر با سرور اصلی میشود. برای درک بهتر، به این مثال توجه کنید:
- D: تعدادی کامپیوتر خانگی کاربران
- E: سرور پروکسی معکوس
- F: یک یا چند سرور اصلی
مزایای استفاده از پروکسی معکوس
- توزیع بار (Load Balancing): وبسایتهای پربازدید با میلیونها کاربر در روز، ممکن است با تنها یک سرور اصلی واحد، قادر به مدیریت حجم ترافیک ورودی نباشند. در این حالت، میتوان از چندین سرور برای توزیع بار استفاده کرد؛ یک پروکسی معکوس به عنوان توزیعکننده بار عمل میکند و ترافیک ورودی را به طور مساوی بین سرورها تقسیم میکند تا از اضافهبار روی یک سرور خاص جلوگیری شود. در صورت خرابی کامل یک سرور، سرورهای دیگر میتوانند جایگزین آن شده و ترافیک را مدیریت کنند.
- محافظت در برابر حملات: با استفاده از پروکسی معکوس، آدرس IP سرورهای اصلی وبسایت یا سرویس، هرگز آشکار نمیشود. این امر، حملات هدفمند مانند DDoS را برای مهاجمان دشوارتر میکند. مهاجمان فقط میتوانند به پروکسی معکوس، مثلCDN کلودفلر، حمله کنند که از امنیت و منابع بیشتری برای دفع حملات سایبری برخوردار است.
- Global server load balancing یا GSLB: در این نوع توزیع بار، وبسایت میتواند در سرورهای مختلفی در سراسر جهان توزیع شود و پروکسی معکوس، کاربران را به نزدیکترین سرور از نظر جغرافیایی هدایت میکند. این امر، مسافت طی شده توسط درخواستها و پاسخها را کاهش میدهد و زمان بارگذاری را به حداقل میرساند.
- ذخیرهسازی (Caching): پروکسی معکوس میتواند محتوا را ذخیره کند که این امر منجر به افزایش و بهبود عملکرد میشود. به عنوان مثال، اگر کاربری در پاریس از یک وبسایت با سرورهای اصلی در لسآنجلس که از پروکسی معکوس استفاده میکند بازدید کند، ممکن است به جای اتصال مستقیم به سرور اصلی در لسآنجلس، به سرور پروکسی معکوس محلی در پاریس متصل شود. سپس سرور پروکسی میتواند دادههای پاسخ را ذخیره (یا به طور موقت ذخیره) کند. کاربران بعدی در پاریس که از این وبسایت بازدید میکنند، نسخه ذخیرهشده محلی را از سرور پروکسی معکوس پاریس دریافت میکنند که منجر به عملکرد بسیار بهتر و سریعتر میشود.
- رمزگذاری SSL: رمزگذاری و رمزگشایی ارتباطات SSL (یا TLS) برای هر کاربر میتواند برای سرور اصلی از نظر محاسباتی پرهزینه باشد. یک پروکسی معکوس را میتوان برای رمزگشایی تمام درخواستهای ورودی و رمزگذاری تمام پاسخهای خروجی پیکربندی کرد که باعث آزاد شدن منابع ارزشمند روی سرور اصلی میشود.
نحوه پیادهسازی Reverse Proxy
دو روش اصلی برای پیادهسازی پروکسی معکوس وجود دارد که در ادامه به هر یک پرداخته شده است.
راهاندازی سرور Reverse Proxy اختصاصی
این روش به دانش فنی و منابع سختافزاری و نرمافزاری بالایی نیاز دارد و شامل خرید و پیکربندی سرورهای فیزیکی و نصب و راهاندازی نرمافزار Reverse Proxy میشود.
استفاده از خدمات CDN
CDN یا Content Delivery Network شبکهای از سرورهای توزیعشده در سراسر جهان است که محتوای وب را به کاربران نزدیک به محل سکونتشان ارائه میدهد. بسیاری از CDNها، مانند Cloudflare، خدمات پروکسی معکوس را نیز ارائه میدهند. استفاده از CDN، راهحلی آسانتر و مقرون به صرفهتر برای بهرهمندی از مزایای پروکسی معکوس است.
مزایای استفاده از CDN برای پیادهسازی پروکسی معکوس
- آسانتر: نیاز به دانش فنی و منابع سختافزاری و نرمافزاری کمتری دارد.
- مقرون به صرفه تر: هزینههای راهاندازی و نگهداری پایینتر است.
- مقیاسپذیری: به راحتی قابل مقیاسبندی برای پاسخگویی به ترافیک در حال رشد است.
- عملکرد: CDNها معمولاً از نظر عملکردی سریعتر از سرورهای پروکسی معکوس اختصاصی هستند.
- امنیت: CDNها از امنیت بالایی در برابر حملات سایبری برخوردار هستند.
در نهایت، انتخاب روش مناسب برای پیادهسازی پروکسی معکوس به نیازها و منابع شما بستگی دارد. اگر دانش فنی و منابع کافی را دارید، راهاندازی سرور پروکسی معکوس اختصاصی میتواند به شما کنترل و انعطافپذیری بیشتری بدهد. اما اگر به دنبال راهحلی آسانتر و مقرون به صرفهتر هستید، استفاده از خدمات CDN گزینه بهتری است.
جمعبندی
پروکسی معکوس سرویسی است که بین سرور اصلی و اینترنت قرار میگیرد و بهجای سرور اصلی به درخواستهای کاربران پاسخ میدهد. این روش مزایای متعددی از جمله افزایش امنیت، عملکرد و قابلیت اطمینان وبسایت را به همراه دارد.
از جمله مزایای پروکسی معکوس میتوان به توزیع بار، محافظت در برابر حملات، GSLB، ذخیرهسازی محتوا و رمزگذاری SSL اشاره کرد. دو روش اصلی برای پیادهسازی پروکسی معکوس وجود دارد: راهاندازی سرور اختصاصی و استفاده از خدمات CDN. انتخاب روش مناسب به نیازها و منابع شما بستگی دارد.