تغییرات اخیر

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

نصب Nginx

برای اینکه بتوانید آن را نصب کنید، اول با این دستور مخازن (Repository) را به روز رسانی کنید و بعد 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 در سرورهای لینوکسی

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

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

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

نمونه پیکربندی 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 های واقعی شما را مخفی می‌کند، اما VPN کل ترافیک را رمزنگاری می‌کند.

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

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

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

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

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

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

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

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

Reverse proxy چیست؟
Reverse proxy

جمع بندی

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

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