Reverse Proxy یا ریورس پروکسی سروری است که درخواست کاربر را دریافت می‌کند و به سرویس بک‌اند مناسب می‌فرستد. کاربرد آن فقط تقسیم بار نیست. TLS Termination، کشینگ، فشرده‌سازی، احراز هویت لبه و مسیریابی نیز از موارد استفاده آن هستند.

سناریوی فروشگاه

در معماری فروشگاه، درخواست‌های /api به سرویس API و درخواست‌های /admin به پنل مدیریت می‌روند. هر دو می‌توانند پشت یک دامنه و یک ریورس پروکسی باشند، در حالی که سرویس‌های داخلی در شبکه خصوصی اجرا می‌شوند.

Nginx

upstream shop_api {
    server 127.0.0.1:8000;
    server 127.0.0.1:8001;
}
server {
    listen 80;
    server_name shop.example;
    location /api/ {
        proxy_pass http://shop_api;
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Apache HTTP Server

# Enable mod_proxy and mod_proxy_http
<VirtualHost *:80>
  ServerName shop.example
  ProxyPreserveHost On
  ProxyPass /api/ http://127.0.0.1:8000/api/
  ProxyPassReverse /api/ http://127.0.0.1:8000/api/
</VirtualHost>

Caddy

shop.example {
    reverse_proxy /api/* 127.0.0.1:8000 127.0.0.1:8001
}

مقایسه

گزینهویژگیمناسب برای
Nginxپیکربندی قدرتمند HTTP و TCPسایت‌ها و APIهای پرترافیک
Apacheماژول‌های متنوع و یکپارچگی قدیمیهاست و برنامه‌های سنتی
Caddyپیکربندی مختصر و HTTPS خودکار در شرایط مناسبسرویس‌های کوچک تا متوسط
TraefikService Discovery و ادغام با کانتینرهاداکر و کوبرنتیز

نکته فنی

در سناریوی واقعی باید HTTPS، Health Check، Timeout، مسیرهای درست و Trusted Proxy Headers را پیکربندی کنید. به هدر Forwarded ارسال‌شده مستقیم از اینترنت بدون مرز اعتماد اتکا نکنید.

اصطلاحات مرتبط: لودبالانسر، انجینکس، پروتکل انتقال ابرمتن، امنیت لایه انتقال، کشینگ، کوبرنتیز، درگاه API.

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