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 خودکار در شرایط مناسب | سرویسهای کوچک تا متوسط |
| Traefik | Service Discovery و ادغام با کانتینرها | داکر و کوبرنتیز |
نکته فنی
در سناریوی واقعی باید HTTPS، Health Check، Timeout، مسیرهای درست و Trusted Proxy Headers را پیکربندی کنید. به هدر Forwarded ارسالشده مستقیم از اینترنت بدون مرز اعتماد اتکا نکنید.
اصطلاحات مرتبط: لودبالانسر، انجینکس، پروتکل انتقال ابرمتن، امنیت لایه انتقال، کشینگ، کوبرنتیز، درگاه API.
برای آشنایی با وظایف کلی نرمافزارهای پاسخدهنده به درخواست وب، صفحه وب سرور را هم بخوانید.