آنچه در این مقاله می خوانید:
پروکسی معکوس یا Reverse proxy چیست؟
سرور معکوس یا Reverse proxy در واقع سرورهایی هستند که درخواست کلاینت ها به آنها ارسال می شود. استفاده از این سرورها مزایای بسیار زیادی مانند ارتقای امنیت، افزایش سرعت و همینطور دسترسی پذیری دارد و به همین دلیل اغلب وبسایتها از آن استفاده می کنند.
پروکسی معکوس یا Reverse proxy چیست:
پروکسی معکوس (Reverse Proxy) یا همان سرورهای واسط، در واقع سرورهایی هستند که به عنوان یک میانجی بین کاربران و سرورهای پایانی عمل میکنند. در این حالت، کاربران درخواست خود را به سرور معکوس ارسال میکنند و سرور معکوس در صورت لزوم، درخواست را به یکی از سرورهای پایانی میفرستد و دریافت پاسخ را به کاربر ارسال میکند.
به Reverse Proxy گاهیInbound Proxy نیز گفته میشود و به Proxy همانطور که حدس میزنید Outbound Proxy گفته میشود. دلیل آن هم کاملا واضح است چون Reverse Proxy یا همان Inbound Proxy درخواست ها را از سمت بیرون شبکه داخلی دریافت میکند اما Proxy یا همان Outbound Proxy درخواست ها را از سمت داخل شبکه به بیرون شبکه یا اینترنت ارسال می کند.
استفاده از سرورهای معکوس برای مدیریت بار (Load Balancing)، بهبود امنیت و مهارت در ارائه خدمات وب به کاربران کمک میکند. در واقع، سرورهای معکوس میتوانند به عنوان یک لایه واسط بین کاربران و سرورهای پایانی عمل کنند و میزان بار سرورهای پایانی را توزیع کنند، حملات امنیتی را تشخیص داده و جلوگیری کنند و همچنین امکاناتی مانند: Caching و SSL Offloading را فراهم میکنند.
به عبارت ساده تر باید بگوییم که Reverse Proxy Server سروری است که پشت فایروال قرار میگیرد و درخواست ها را از شبکه اینترنت دریافت کرده و آنها را به سرور های موجود در شبکه داخلی ارسال میکند. بدیهی است که سرور های موجود در شبکه داخلی بصورت مستقیم از شبکه اینترنت قابل دسترسی نمیباشند و Reverse Proxy باعث می شود که کاربران درخواست کننده سرویس از سمت اینترنت از طرف Reverse Proxy سرور احراز هویت شوند.
بسته به نیاز و ویژگیهای سرور معکوس، میتوان از نرمافزارهای مختلفی مانند: Apache ،Nginx ،HAProxy و Squid استفاده کرد. هر یک از این نرمافزارها ویژگیهای مخصوص به خود را دارند و معمولاً بر اساس نیازهای خاصی این نرمافزارها به کار گرفته میشوند که در ادامه این مقاله به بررسی انواع کاربردهای پروکسی معکوس و نحوه استفاده از نرم افزار های آن میپردازیم.
بیشتر بدانید: آشنایی با پروتکل SSL، HTTP و HTTPS
فروارد پروکسی یا Forward Proxy چیست:
فروارد پروکسی (Forward Proxy)، نوع دیگری از پروکسی سرور است که به جای میانجیگری بین کاربران و سرورهای پایانی، درخواستهای کاربران را به سرورهای دیگر در شبکه ارسال میکند. در واقع، فروارد پروکسی به عنوان یک لایه واسط بین کاربران و اینترنت عمل میکند و ترافیک کاربران را به سمت اینترنت هدایت میکند.
بسته به نوع فروارد پروکسی، این سرور میتواند امکانات ویژهای مانند: caching، فیلترینگ و کنترل دسترسی را فراهم کند. به عنوان مثال، در سازمانها و شرکتها، از فروارد پروکسی برای کنترل دسترسی به اینترنت و فیلترینگ محتوا و … استفاده میشود. در این حالت، Forward Proxy میتواند دسترسی به سایتهای خاص را محدود کند و محتوای نامناسب را فیلتر کند.
استفاده از فروارد پروکسی همچنین میتواند به بهبود عملکرد شبکه و کاهش بار سرورهای پایانی کمک کند. با فعالسازی caching، فروارد پروکسی میتواند صفحات وب را در حافظه خود نگهداری کرده و در صورت درخواست مجدد از کاربران، صفحات را به صورت سریعتر ارسال کند. این امکان باعث بهبود سرعت بارگیری صفحات وب و بهبود تجربه کاربری میشود. نرمافزارهای مختلفی مانند: Squid، Apache و Nginx میتوانند به عنوان فروارد پروکسی استفاده شوند.
بیشتر بخوانید: پروکسی سرور چیست و چگونه کار می کند؟
تفاوت Forward Proxy با Reverse Proxy چیست:
همانطور که قبلاً گفته شد، فروارد پروکسی و پروکسی معکوس دو نوع پروکسی سرور متفاوت هستند که هر کدام از آنها به صورت متفاوتی عمل میکنند. فروارد پروکسی به عنوان یک لایه واسط بین کاربران و اینترنت عمل میکند و درخواستهای کاربران را به سرورهای دیگر در شبکه ارسال میکند. بسته به نوع فروارد پروکسی، این سرور میتواند امکانات ویژهای مانند: caching، فیلترینگ و کنترل دسترسی به وب و محتواها را فراهم کند. در سازمانها و شرکتها از فروارد پروکسی به صورت داخلی استفاده می شود و برای کنترل دسترسی به اینترنت و فیلترینگ محتوا و یا خدمات زیر مورد استفاده قرار میگیرند که عبارتند از:
- امکان بازدید از وب سایت های نامناسب را به کارکنان خود نمی دهد.
- امکان نظارت بر فعالیت آنلاین کارکنان را فراهم می کند.
- از رسیدن ترافیک های مخرب به سرور اصلی جلوگیری می کند.
- با cache کردن محتوای سایت تجربه ی کاربری را بهبود می بخشد.
در مقابل، پروکسی معکوس به عنوان یک لایه واسط بین کاربران و سرورهای پایانی عمل میکند. در این حالت، کاربران درخواست خود را به سرور معکوس ارسال میکنند و سرور معکوس در صورت لازم، درخواست را به یکی از سرورهای پایانی ارسال کرده و دریافت پاسخ را به کاربر ارسال میکند. سرورهای معکوس میتوانند به عنوان یک لایه واسط بین کاربران و سرورهای پایانی عمل کرده و میزان بار سرورهای پایانی را توزیع کنند، درخواستهای حملهکننده را تشخیص داده و جلوگیری کنند و همچنین امکاناتی مانند: caching و SSL offloading را فراهم میکنند.
از Forward Proxy عموما برای دور زدن و رفع محدودیتهایی فایروال استفاده می شود. فرض کنید یک سایت محدودیتی روی IP شما ایجاد کرده است، تنها راهی که به شما اجازه میدهد مسدود بودن IP را دور بزنید استفاده از فوروارد پروکسی است که IP مسدود شده شما هنگامی که به سرورهای Forward وصل شود میتواند به سرور مورد نظری که شما را بلاک کرده وصل شوید.
بنابراین، تفاوت اصلی بین فروارد پروکسی و پروکسی معکوس در نحوه کارکرد آنها است. فروارد پروکسی درخواستهای کاربران را به سمت سرورهای دیگر در شبکه هدایت میکند، در حالی که پروکسی معکوس درخواستهای کاربران را به سمت سرورهای پایانی هدایت میکند. در مورد امنیت نیز، پروکسی معکوس میتواند امکانات ویژهای ارائه دهد. به عنوان مثال، با فعالسازی SSL offloading، پروکسی معکوس میتواند ترافیک رمزگذاری شده SSL را دریافت کرده و آن را به خود کشیده و پس از دیکریپت کردن، ترافیک را به سرور پایانی ارسال کند.
با این کار، میزان بار و تحمل سرورهای پایانی کاهش مییابد و همچنین امنیت بیشتری برای کاربران فراهم میشود. در نتیجه پروکسی معکوس میتواند از caching برای بهبود سرعت بارگیری صفحات وب استفاده کند. با فعالسازی caching، پروکسی معکوس میتواند صفحات وب را در حافظه خود نگهداری کرده و در صورت درخواست مجدد از کاربران، صفحات را به صورت سریعتر ارسال کند. این امکان باعث بهبود سرعت بارگیری صفحات وب و بهبود تجربه کاربری میشود.
چرا از Reverse proxy استفاده کنیم:
استفاده از سرورهای معکوس (Revers Proxy) برای شبکههای مختلف مزایا و فواید متعددی دارد که در زیر به برخی از آنها اشاره میکنیم:
- بهبود عملکرد و کارایی شبکه: سرورهای معکوس میتوانند به عنوان یک لایه واسط بین کاربران و سرورهای پایانی عمل کرده و میزان بار سرورهای پایانی را توزیع کنند. با این کار، میزان بار هر سرور پایانی کاهش پیدا میکند و امکان ارائه خدمات بهتر و پایدارتر به کاربران افزایش مییابد.
- افزایش امنیت: سرورهای معکوس میتوانند امکانات ویژهای مانند: SSL offloading را فراهم کنند که باعث افزایش امنیت سامانه شبکه میشود. با فعالسازی SSL offloading، پروکسی معکوس میتواند ترافیک رمزگذاری شده SSL را دریافت کرده و پس از دیکریپت کردن، ترافیک را به سرور پایانی ارسال کند. با این کار، میزان بار و تحمل سرورهای پایانی کاهش مییابد و همچنین امنیت بیشتری برای کاربران فراهم میشود.
- فیلترینگ و کنترل دسترسی: سرورهای معکوس میتوانند از امکانات فیلترینگ و کنترل دسترسی استفاده کنند و به این ترتیب، دسترسی کاربران به سایتهای خاص را محدود کنند و محتوای نامناسب را فیلتر کنند.
- مدیریت بار: سرورهای معکوس میتوانند به عنوان یک لایه واسط بین کاربران و سرورهای پایانی عمل کرده و ترافیک را بین سرورهای پایانی تقسیم میکنند. با این کار، میزان بار هر سرور پایانی کاهش پیدا میکند و امکان ارائه خدمات بهتر و پایدارتر به کاربران افزایش مییابد.
- caching: این سرور میتواند از caching برای بهبود سرعت بارگیری صفحات وب استفاده کند. با فعالسازی caching، پروکسی معکوس میتواند صفحات وب را در حافظه خود نگهداری کرده و در صورت درخواست مجدد از کاربران، صفحات را به صورت سریعتر ارسال کند. این امکان باعث بهبود سرعت بارگیری صفحات وب و بهبود تجربه کاربری میشود.
- قابلیت انعطاف پذیری: Reverse proxy میتوانند به سادگی به شبکههای مختلف اضافه شوند و به وسیله تنظیمات مختلف، قابلیت انعطاف پذیری بالایی دارند. به عنوان مثال، میتوانند به عنوان یک لایه واسط بین بخشهای مختلف یک شبکه کار کنند و با ارسال ترافیک به سرورهای پایانی، میزان بار را توزیع کنند.
- حفاظت از حملات DDoS: با استفاده از سرور معکوس، میتوان حملات DDoS را به سرورهای پایانی شناسایی کرده و از بین برد. سرور معکوس میتواند ترافیک ناشی از حملات DDoS را شناسایی کرده و این ترافیک را به سرورهای پایانی نفرستد و به این ترتیب، سرورهای پایانی را در برابر حملات DDoS محافظت کند.
- افزایش سرعت: این پروکسی میتواند به عنوان یک لایه واسط، ترافیک را به صورت بهینه و سریع تری به سرورهای پایانی ارسال کنند و در نتیجه، سرعت بارگیری صفحات وب و برنامههای کاربردی افزایش پیدا میکند.
- مدیریت و کنترل ترافیک: با استفاده از این سرور میتوان ترافیک شبکه را به صورت دقیق کنترل کرد و ترافیک غیر ضروری را محدود کرد. به عنوان مثال، میتوان به صورت دقیق ترافیک را به سمت سرورهای پایانی، به خصوص در ساعات پرترافیک یا در صورت بار زیاد کنترل کرد.
- کاهش هزینهها: استفاده از Reverse proxy میتواند به کاهش هزینههای سرورهای پایانی منجر شود. با توزیع ترافیک بین سرورهای پایانی، نیاز به سرورهای اضافی و هزینههای مربوط به آنها کاهش پیدا میکند.
نحوه استفاده از پروکسی معکوس :
برای استفاده از پروکسی معکوس، شما باید یک سرور مجازی یا سرور فیزیکی با نرمافزار پروکسی معکوس نصب شده داشته باشید. پروکسی معکوس میتواند به صورت مجازی درون یک سرور مجازی یا کانتینر نصب شود یا روی یک سرور فیزیکی نصب شود.
برای نصب نرمافزار پروکسی معکوس، شما میتوانید از نرمافزارهای مختلف مانند: Nginx ،Apache HAProxy و Squid استفاده کنید. این نرمافزارها از پروتکلهای مختلفی مانند: HTTP ،HTTPS ،TCP و UDP پشتیبانی میکنند و میتوانند به عنوان یک فیلتر کننده ترافیک، توزیعکننده ترافیک، کشکننده و یا … عمل کنند.
پس از نصب و تنظیم پروکسی معکوس، شما میتوانید با تغییر تنظیمات شبکه کاربران خود را به پروکسی معکوس هدایت کنید و درخواستهای آن ها را به سرور مقصد ارسال کنید. همچنین، با تنظیمات مختلف در نرمافزار پروکسی معکوس، میتوانید امنیت، عملکرد و قابلیت دسترسی به سرورهای مقصد را افزایش دهید.
بیشتر بدانید: پروتکل HTTPS چیست و چه کاربردی دارد؟
برخی از نرم افزارهای پروکسی معکوس:
- NGINX:
Nginx یک وب سرور منبع باز است که می تواند به عنوان یک پروکسی معکوس نیز عمل کند. جدا از اینکه برای میزبانی وب سایت مورد استفاده قرار می گیرد، یکی از پرکاربردترین راهکارهای معکوس پروکسی و تعادل بار است. طبق Netcraft، بیش از 479 میلیون وب سرور از Nginx در دسامبر 2019 استفاده کرده اند، و این باعث می شود که NGINX رهبر نرم افزارهای پروکسی معکوس در نظر گرفته شود.
Nginx تمام مزایای معکوس پروکسی را که در بالا بحث شد، به علاوه موارد دیگر، را فراهم می کند. عملکرد، امنیت، قابلیت اطمینان و مقیاس پذیری وب را بهبود می بخشد. همچنین می توانید از Nginx Plus، برای دسترسی به گزینه های پیکربندی مبتنی بر API و سایر ویژگی های مناسب برای وب سایت های سازمانی بزرگ استفاده کنید.
- Apache:
سرور ترافیک Apache یک سرور پروکسی حافظه پنهان منبع باز است. به دلیل ویژگی های سریع و مقیاس پذیری بالا دارای محبوبیت زیادی است. این یک محصول تجاری است که توسط Yahoo ساخته شد. چندین شبکه محتوای مهم و CDN مانند: Comcast ،Akamai ،LinkedIn ،Yahoo و Apple از Apache Traffic Server برای تأمین انرژی فناوری خود از این نرم افزار استفاده می کنند.
همچنین می توانید از Apache HTTP Server (Apache httpd)، یک سرویس دهنده سرور HTTP، برای تنظیم یک پروکسی معکوس در وب سرور خود تهیه کنید. جدا از اینکه به عنوان یک وب سرور اساسی عمل می کند، به شما کمک می کند، محتوای ایستا و پویا را نیز در اختیار کاربران قرار دهید.
- HAProxy:
HAProxy (مخفف High Availability Proxy) نرمافزاری منبعباز و بسیار محبوب درزمینه Load Balancing محسوب میشود. این نرمافزار را میتوان روی سیستمعاملهای لینوکس و macOS و FreeBSD اجرا کرد. رایجترین کاربرد HAProxy بهبود عملکرد در محیط سرور با استفاده از پخش بار روی سرورهای مختلف است. این نرمافزار محبوب در سرویسهای بسیار پرمخاطبی مانند: Instagram ،Twitter ،GitHub و Imgur استفاده شده است. نرم افزار HAProxy حتی در زیر بارهای سنگین HTTP نیز عملکرد فوق العاده ای دارد.
نحوه راه اندازی Nginx به عنوان یک پروکسی معکوس:
برای اینکه بتوانید Nginx را درحالت Reverse Proxy پیاده سازی کنید. قبل از انجام این کار ابتدا بر روی یک سرور جدا این فرآیند را تست کنید و درصورتی که از فرآیند اجرا شده راضی بودید و به طور کامل فرآیند Reverse Proxy برای شما فعال شد آن وقت آن را بر روی سرور های اصلی خود انجام دهید. به عنوان مثال میتوانید از وب سرور WebFs که یک وب سرور سبک و ساده است برای تست اینکار استفاده کنید همچنین این وب سرور بر روی پورت 8000 کار میکند. نحوه نصب آن نیز بدین شکل میباشد. برای راه اندازی Nginx به عنوان یک پروکسی معکوس، مراحل زیر را باید انجام دهید:
- نصب Nginx
ابتدا باید Nginx را بر روی سیستم خود نصب کنید. برای اینکار میتوانید از دستور زیر در ترمینال استفاده کنید:
در مثال زیر یک ما یک Reverse Proxy را با استفاده از Nginx بر روی یک وب سرور Apache پیاده سازی میکنیم. ابتدا مخازن APT را آپدیت میکنیم و بعد Nginx را نصب میکنیم.
sudo apt-get update
sudo apt-get install nginx
- پیکربندی Nginx
نکته: درصورتی که از شما سوالی مبنی بر اجازه نصب پرسید باید دکمه Y را بزنید و Enter کنید. دستور زیر را وارد کنید تا قابلیت Virtual Host در Nginx غیرفعال شود.
فایل پیکربندی اصلی Nginx به نام nginx.conf در مسیر /etc/nginx قرار دارد. برای پیکربندی Nginx به عنوان یک پروکسی معکوس، میتوانید فایل پیکربندی nginx.conf را باز کرده و تنظیمات زیر را در آن اعمال کنید:
unlink /etc/nginx/sites-enabled/default
وارد دایرکتوری /etc/nginx/sites-available شوید و یک فایل Reverse-Proxy.conf را ایجاد کنید.
cd /etc/nginx/sites-available
nano reverse-proxy.conf
در این مرحله کانفیگ زیر را در فایلی که ایجاد کردیم قرار میدهیم و Traffic های که به سمت Port 80 میآیند را به سمت Port 8000 وب سرور WebFS ارسال میکنیم (بسته به شرایط مورد نظرتان کانفینگ را تغییر دهید).
server {
listen 80;
listen [::]:80;
access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;
location / {
proxy_pass https://127.0.0.1:8000;
}
}
کانفیگ مسیر /etc/nginx/sites-available را در مسیر /etc/nginx/sites-enabled کپی کنید.
ln -s /etc/nginx/sites-available/reverse-proxy.conf /etc/nginx/sites-enabled/reverse-proxy.conf
برای تست Nginx از دستور زیر استفاده کنید.
Nginx -t
و در نتیجه خروجی دستور بالا باید به شکل زیر باشد:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
مزایا و فواید متعدد و مختلفی وجود دارد که ما Nginx را به حالت Reverse Proxy استفاده کنیم و از آن مزیت ها بهره ببریم؛ از جمله این مزیت ها عبارتند از:
- توانایی ایجاد Load Balancing و توزیع بار روی سرور های سمت Back-End توانایی ارسال-دریافت درخواست ها از سرور ها به مقصد های خودشان بدون ایجاد تداخل بین درخواست های کاربران
- ایجاد دسترسی پذیری بیشتر و داشتن اطمینان از، از دسترس خارج نشدن سرور بدین شکل که اگر یکی از سرور ها منفجر شود برای مثال: سرور های دیگر بتوانند جای آن را پر کنند و درخواست ها در سروری دیگر میزبانی شوند
- قابلیت ایجاد امنیت و ناشناس سازی سرور های وب سایت بدین شکل که Reverse Proxy تضمین میدهد که در ارسال-دریافت بسته ها هویت سرور ها به طور کامل ناشناخته میباشند
- توانایی پشتیبانی از Https و TLS به منظور رمزگذاری داده ها.
- مشتریان از طریق یک آدرس وب واحد به همه منابع باطن دسترسی دارند.
- پروکسی معکوس میتواند محتوای ثابت را ارائه کند، که بار روی سرورهای برنامه مانند: Express ،Tomcat یا WebSphere را کاهش میدهد.
- پروکسی معکوس Nginx می تواند از طریق فایروال هایی که از منابع باطن محافظت می کنند، حرکت کند.
- Reverse Proxy می تواند به عنوان یک کش یا بافر برای کاهش تاخیر عمل کند.
- کنترل دسترسی کاربر با یک نقطه دسترسی به سایت شما بسیار ساده شده است.
معایب استفاده از پروکسی معکوس یا Reverse proxy :
و در آخر میتوانیم بگوییم که پروکسی معکوس علاوه بر مزایای زیادی که برخوردار است معایبی هم دارد که ما در اینجا به چند مورد اشاره خواهیم کرد که عبارتند از:
- کندی عملکرد: استفاده از پروکسی معکوس ممکن است باعث کند شدن عملکرد سیستم شود، به ویژه در صورتی که پروکسی معکوس برای بار ترافیک بالا مورد استفاده قرار بگیرد.
- پیچیدگی تنظیمات: پیکربندی پروکسی معکوس ممکن است پیچیده باشد و نیاز به تجربه و دانش فنی داشته باشد.
- مشکلات دسترسی: استفاده از پروکسی معکوس ممکن است باعث مشکلات دسترسی به برخی وب سایتها و برنامهها شود، به عنوان مثال در صورتی که وب سایت یا برنامه از تشخیص IP استفاده کنند و از آدرس IP پروکسی معکوس استفاده شود.
- مشکلات امنیتی: استفاده از پروکسی معکوس گاهی اوقات سبب بروز مشکلات امنیتی نیز می شود، به ویژه در صورتی که پروکسی معکوس به درستی پیکربندی نشده باشد. همچنین، اگر پروکسی معکوس توسط یک حملهکننده کنترل شود، میتواند باعث دسترسی غیرمجاز به اطلاعات و سیستم شود.
- مشکلات مربوط به IP آدرس: استفاده از پروکسی معکوس ممکن است باعث به وجود آمدن مشکلاتی مربوط به IP آدرس شود، به عنوان مثال در صورتی که IP آدرس پروکسی معکوس از یک کشور دیگر باشد، ممکن است برخی از وب سایتها و برنامهها به آن دسترسی نداشته باشند.
شما می توانید انواع سرور را از فروشگاه اینترنتی تجهیزات شبکه (مسترشبکه) با بهترین قیمت و کیفیت همراه با گارانتی معتبر خریداری نمایید. |