تغییرات اخیر

در اینجا اطلاعیه‌ها، نسخه‌ها و تغییرات جدید لیارا فهرست می‌شوند.

شناخت پروکسی (Forward Proxy) و پروکسی معکوس (Reverse proxy)


۳۰ اردیبهشت ۱۴۰۴

پروکسی را یک نماینده فرض کنید؛ که دو مدل متفاوت دارد و گاهی نماینده یک کاربر می‌شود و گاهی نماینده یک سرور، همین تفاوت ساده باعث به وجود آمدن دو مفهوم کاربردی و مهم شده است. پروکسی (Forward Proxy) و پروکسی معکوس (Reverse Proxy).

بیاید با شرح مثال این دو را بهتر بشناسیم: پروکسی معمولی از سمت کاربر وارد می‌شود و درخواست‌های لازمه را به مقصد می‌رساند؛ پس به این معنی است که هویت کاربر را پنهان می‌کند و امنیت آن یوزر (user) را بالا می‌برد و سطح دسترسی های آن را کنترل می‌کند. در مقابل پروکسی معکوس (Reverse Proxy) مانند سپری قوی روبه روی سرور می‌ایستد و درخواست های ورودی را مدیریت می‌کند، ترافیک را توزیع می‌کند و جلوی بار اضافه آن ها را می‌گیرد.

دانستن تفاوت های این دو، می‌تواند در تصمیم های طارحی سیستم های امنیت به شما کمک بزرگی را کند. در ادامه این مطلب از لیارا بیشتر به این موضوع خواهیم پرداخت و با ذکر مثال، کاربرد و مزایای آن راحت تر به شما این دو را خواهیم شناخت.

همین الان، بدون کمترین پیچیدگی، سرور مجازی خودتون رو در کمتر از ۳۰ ثانیه، راه‌اندازی کنید.
✅ عملکرد پایدار ✅ ترافیک نامحدود ✅ هزینه به‌صرفه
خرید سرور مجازی ابری

آنچه در ادامه خواهید خواند:

  • پروکسی سرور چیست؟
  • مثالی ساده از عملکرد پروکسی سرور
  • مزایای کلیدی پروکسی سرور ها
  • کاربردهای پروکسی در این زمینه
  • پروکسی معکوس چیست؟
  • مثالی ساده از عملکرد پروکسی معکوس
  • مزایای کلیدی پروکسی معکوس
  • کاربردهای پروکسی معکوس در این زمینه
  • راه‌ اندازی پروکسی معکوس با Nginx
  • توزیع بار Nginx: پیاده‌ سازی Load Balancing در سرورهای لینوکسی
  • سوالات متداول
  • جمع بندی

پروکسی سرور چیست؟

اگر مقدمه را خواندید و کامل به عمق ماجرا نرفتید و آن را درست متوجه نشدید نگران نباشید بیاید تا از ابتدا برای شما این موضوع را بررسی کنیم.

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

شناخت پروکسی (Forward Proxy) و پروکسی معکوس (Reverse proxy)

مثالی ساده از عملکرد پروکسی سرور

  1. کاربر آدرس یک سایت را در مرورگر وارد می‌کند. به‌جای اینکه این درخواست مستقیم به وب‌سایت ارسال شود، ابتدا توسط پروکسی دریافت می‌شود.
  2. پروکسی، درخواست را بررسی می‌کند تا تصمیم بگیرد آن را ارسال کند، رد کند یا یک نسخه‌ی کش‌شده را بفرستد.
  3. اگر پروکسی تصمیم داشته باشد که آن را ارسال کند، به سرور مقصد ارسال می‌کند. سرور مقصد فقط IP پروکسی را می‌بیند، نه IP واقعی کاربر را.
  4. سرور مقصد پاسخ را به پروکسی می‌فرستد و پروکسی آن را به کاربر منتقل می‌کند.

مزایای کلیدی پروکسی سرور ها

اگر از مزایای پروکسی صحبتی نکنیم کم لطفی می‌شود، پروکسی تنها برای مخفی کردن IP نیست، چند تا از بهترین مزایای آن به صورت زیر است:

  • ناشناس ماندن کابر: با پنهان کردن IP واقعی کاربر، حریم خصوصی آن را حفظ می‌کند.
  • کنترل دسترسی: قابلیت مسدود ساختن سایت ها و مدیریت فعالیت های کاربران.
  • افزایش امنیت: فیلتر کردن ترافیک مخرب و جلوگیری از بارگذاری محتوای آلوده.
  • بهینه سازی سرعت: کش کردن اطلاعات پر کاربرد برای کاهش زمان های پاسخ دهی.
مزیتتوضیح کوتاه و کاربردی
ناشناس ماندن کاربرIP واقعی کاربر رو مخفی می‌کنه و باعث حفظ حریم خصوصی و امنیت بیشتر می‌شه.
کنترل دسترسیمی‌تونه سایت‌های خاصی رو محدود یا مسدود کنه و رفتار کاربران رو مدیریت کنه.
افزایش امنیتترافیک ورودی و خروجی رو بررسی می‌کنه و جلوی ورود محتوای آلوده یا بدافزارها رو می‌گیره.
بهینه‌سازی سرعتمحتوای پرتکرار رو کش می‌کنه تا زمان پاسخ‌دهی کم‌تر بشه و تجربه‌ی کاربری بهتر شه.

کاربردهای پروکسی در این زمینه

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

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

پروکسی معکوس چیست؟

پروکسی معکوس (Reverse proxy) دقیقا بلعکس پروکسی (Forward Proxy) عمل می‌کند. این مدل پروکسی روبه روی سرور ها قرار می‌گیرد و درخواست هایی را که از سمت کاربران به دست سرور ها می‌رسد را مدیریت و کنترل می‌کند. اگر بخواهیم راحت تر آن را بگوییم، پروکسی نماینده کابر است، اما پروکسی معکوس نماینده سرور. مانند یک نگهبان در جلوی درب ورودی ایستاده است و تصمیم می‌گیرد که چه کسی و در چه زمانی به کدام سرور دسترسی های لازم را داشته باشد.

یکی از مهم ترین کاربردهایی که پروکسی معکوس دارد، محافظت از سرور های اصلی است. به این دلیل که کاربر ها هیچ زمانی مستقیما به سرور وصل نمی‌شووند و همه چیز از طریق این واسطه رد و بدل می‌شود بنابراین امنیت بالاتر می‌رود. مخصوصا در زمان هایی که حملاتی مانند DDoS که تمامی هدف اشباع کردن سرور است اتفاق می‌افتد.

با این روش، IP واقعی سرور ها هم مخفی خواهد ماند و لایه های امنیتی دیگری ساخته می‌شود، به این معنی است که اگر شخصی بخواهد به این سرور ها حمله کند، نمیداند که دقیقا باید به کجا حمله کند.

آموزش نصب و راه اندازی Squid Proxy در اوبونتو 22.04
Squid Proxy در اوبونتو

مثالی ساده از عملکرد پروکسی معکوس

بیاید با یه مثال خیلی ساده، بهتر عملکرد پروکسی معکوس رو درک کنیم:

فرض کنید کاربر آدرس یک وب‌سایت رو توی مرورگر وارد می‌کنه. این درخواست به جای اینکه مستقیم بره سمت سرور اصلی، اول میاد سراغ پروکسی معکوس. حالا این پروکسی معکوس بسته به شرایط (مثلاً کدوم سرور خلوت‌تره یا سالم‌تره)، تصمیم می‌گیره که این درخواست رو به کدوم یکی از سرورهای پشت‌صحنه بفرسته.

سرور انتخاب‌شده پاسخ رو می‌ده، اما باز هم این جواب اول می‌رسه به پروکسی معکوس، و بعد اون، جواب رو به کاربر برمی‌گردونه. در تمام این مسیر، کاربر هیچ‌وقت با سرور واقعی در تماس نیست. همه چیز از پشت پرده مدیریت می‌شه، دقیقاً مثل یه نگهبان دم در که نذاره کسی مستقیم وارد ساختمون بشه.

مزایای کلیدی پروکسی معکوس

  • امنیت بیشتر: با مخفی نگه داشتن سروهای اصلی از دید کاربر، جلوی بسیاری از حملع های سایبری را خواهد گرفت و مانند لایه های محافظجلوی زیر ساخت عمل می‌کند.
  • توزیع بار (Load Balancing): درخواست ها را بین چند سرور تقسیم می‌کند تا فشار بر روی یکی از آن ها وارد نشود و همه چی با سرعت و بدون اختلال انجام شود.
  • کش محتواهای ایستا: فایل های ثابت مانند JS و CSS تصاویر را کش می‌کند تا سریع تر لود شود و سرور شبک تر شود.
  • رمزنگاری SSL: پروکسی معکوس مسئول رمز گشایی HTTPS می‌شود و سرورهای اصلی راحت تر عمل می‌کند.
  • فایروال اپلیکیشن (WAF): به صورت هوشمندانه ترافیک مشکوک را شناسایی می‌کند.
مزیتتوضیح کوتاه
امنیت بیشترمخفی نگه‌داشتن IP و هویت سرورهای اصلی، جلوگیری از حملات مستقیم به زیرساخت
توزیع بار (Load Balancing)پخش ترافیک ورودی بین چند سرور برای کاهش فشار روی یک سرور خاص
کش محتوای ایستاذخیره‌سازی فایل‌های ثابت مثل CSS و عکس‌ها برای افزایش سرعت پاسخ‌دهی
رمز نگاری SSLانجام فرآیند رمزگشایی HTTPS در خود پروکسی برای کاهش بار پردازشی سرورها
فایروال اپلیکیشن وب (WAF)محافظت در برابر ترافیک مشکوک یا مخرب

کاربردهای پروکسی معکوس در این زمینه

یکی از معروف ترین و پر استفاده ترین پروکسی های معکوسی که همه از آن استفاده می‌کنند، Cloudflare است. اکثر سایت ها و اپلیکیشن ها از آن برای اینکه بتوانند امنیت، سرعت و پایداری بیشتری داشته باشند از آن استفاده می‌کنند.

ابزارهایی مانند فایروال Cloudflare (WAF) و محافظت در برابر حملات DDoS باعث می‌شوند که ترافیک مخرب نتواند به سرور برسد و از همان ابتدا مسدود بشود. از آن طرف، Cloudflare با در اختیار داشتن بیش از 200 دیتاسنتر، فایل های پر تکرار چه استاتیک باشند و چه داینامیک، آن ها را در نزدیک کاربر نگه می‌دارد. در نتیجه سرعت بالا، تاخیر کمتر و تجربه کاربری بهتری نصیبشان می‌شود.

پروکسی (Forward Proxy) و پروکسی معکوس (Reverse proxy)

راه‌ اندازی پروکسی معکوس با Nginx

یکی از بهترین و پر کاربرترین ابزارهای که برای راه اندازی پروکسی معکوس بر روی سروهای لینوکسی از آن استفاده می‌شود. Nginx است که از قابلیت های زیادی بر خوردار است.

نصب Nginx

برای اینکه بتوانید آن را نصب کنید باید، اول با این دستور ها مخازن را به روز رسانی کنید و بعد Nginx را نصب کنید.

sudo apt update  
sudo apt install nginx

تنظیمات و پیکربندی پروکسی معکوس

بعد از آن که نصب تان با موفقیت انجام شد، باید تنظیمات و پیکربندی ساده ای را برای پروکسی معکوس خود اضافه کنید. برای اینکه بهتر این موضوع را درک کنید به مثال زیر دقت کنید:

اگر سرور پشتی شما روی IP خاصی قرار دارد. کافی است که بلاک زیر را داخل یکی از فایل های پیکربندی Nginx قرار دهید.

server {
    listen 80;
    location / {
        proxy_pass http://backend_server_ip;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

نکته مهم: باید به جای backend_server_ip آدرس IP یا دامنه‌ی سرور پشتی خودتان را در آن قرار دهید.

تست و راه‌اندازی مجدد Nginx

بعد از اینکه تنظیمات شما ذخیره شد، با دستوری که در ادامه برای شما قرار داده‌ایم بررسی کنید تا همه چیز درست انجام شده باشد.

sudo nginx -t  
sudo systemctl reload nginx

توزیع بار Nginx: پیاده‌ سازی Load Balancing در سرورهای لینوکسی

در سایت‌هایی با ترافیک بالا، استفاده از پروکسی معکوس برای توزیع بار بین چند سرور backend یک راهکار بسیار کاربردیه. این کار باعث می‌شه هیچ سروری زیر فشار زیاد نره و عملکرد کل سیستم پایدار بمونه.

Nginx این قابلیت رو به‌صورت داخلی داره و از الگوریتم‌های مختلفی پشتیبانی می‌کنه مثل:

  • Round-robin (پیش‌فرض): درخواست‌ها یکی‌درمیون بین سرورها تقسیم می‌شن.
  • Least connections: هر بار درخواست به سروری می‌ره که تعداد ارتباط‌های فعال کمتری داره.
  • ip_hash: با توجه به IP کاربر، همیشه اون رو به یه سرور خاص می‌فرسته (مناسب برای سشن‌های پایدار).

نمونه پیکربندی Nginx برای Load Balancing

nginxCopyEditupstream backend_servers {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend_servers;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

اگر الگوریتم خاصی مد نظر نداری، Nginx به‌طور پیش‌فرض از Round-robin استفاده می‌کنه، فقط کافیه ip_hash یا گزینه‌ی دیگه‌ای تعریف نشه.

سوالات متداول

در ادامه به سوالاتی که امکان دارد در این زمینه برای شما بدون پاسخ بماند، جواب‌های کوتاه اما مفیدی داده‌ایم که با استفاده از آن می‌توانید به سوال خود پاسخ صحیحی را بدهید.

آیا VPN همان پروکسی است؟

نه دقیقا، هر دوی ان ها IP های واقعی شما را مخفی می2کند، اما VPN کل ترافیک را رمزنگاری می‌کند.

تفاوت پروکسی و پروکسی معکوس چیست؟

  • پروکسی سمت کاربر است و IP کاربر را مخفی نگه می‌دارد.
  • پروکسی معکوس سمت سرور است IP سرور را پنهان می2کند.

چرا باید از پروکسی معکوس استفاده کنیم؟

  • افزایش امنیت
  • توزیع بار بین سرورها
  • کش کردن محتوا برای سرعت بیشتر
  • محافظت در برابر حملات DDoS

آیا Cloudflare پروکسی معکوس است؟

بله، Cloudflare مانند یک پروکسی معکوس عمل می‌کند و امنیت، سرعت و کش کردن محتوا را انجام می‌دهد.

بهترین ابزار برای راه‌اندازی پروکسی معکوس چیست؟

در سرور های لینوکسی، Nginx یکی از بهترین انتخاب ها می‌باشد. این ابزار هم بسیار قدرتمند است و هم بسیار سریع.

Reverse proxy چیست؟
Reverse proxy

جمع بندی

پروکسی و پروکسی معکوس یکی از ابزارهایی است که برای میدیرت و ایمن ساختن ترافیک های شبکه از اون استفاده می‌شود. به گفتاری ساده تر پروکسی نماینده کاربر است و پروکسی معکوس نماینده سرور. اما هر دو آن ها می‌توانند باعث افزایش امنیت، سرعت و کنترل بهتر بشوند. استفاده از Nginx یکی از راهکار های ساده و بسیار قوی برای پیاده سازی پروکسی معکوس می‌باشد.

به اشتراک بگذارید