ریورس پراکسی: ایک ایڈریس پر کئی ایپلیکیشنز
ایک عوامی VDS ایڈریس کو ڈومینز اور پاتھز کے ذریعے کئی ایپلیکیشنز میں کیسے بانٹیں، ہیڈرز صحیح طریقے سے پاس کریں، اور WebSocket نہ توڑیں۔
اپ ڈیٹ 23 اگست، 2026
ایک مشین کے پاس صرف ایک پبلک IPv4 ایڈریس ہوتا ہے، مگر عام طور پر اس پر کئی ایپلیکیشنز چلتی ہیں۔ ریورس پراکسی پورٹ 80 اور 443 پر آنے والی تمام درخواستیں وصول کر کے ڈومین نام یا پاتھ کے مطابق اندرونی سروسز تک پہنچاتی ہے۔ یہی واحد سرٹیفکیٹ اور مشترکہ لاگز بھی سنبھالتی ہے۔
ترتیب
ہر ایپلیکیشن اپنے مقامی پورٹ پر اور صرف 127.0.0.1 پر سنتی ہے:
- فرنٹ اینڈ سائٹ —
127.0.0.1:3000؛ - API —
127.0.0.1:8000؛ - مانیٹرنگ ڈیش بورڈ —
127.0.0.1:9090۔
صرف Nginx باہر کے لیے کھلا ہے۔ یہ جانچنے کے لیے کہ کوئی ایپلیکیشن براہ راست کھلی نہیں:
ss -tulpn | grep LISTEN
0.0.0.0:3000 جیسی لائنیں بتاتی ہیں کہ سروس انٹرنیٹ سے قابل رسائی ہے، پراکسی کو نظرانداز کرتے ہوئے اور بغیر انکرپشن کے۔
ڈومین کے مطابق
server {
listen 80;
server_name app.example.ru;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name api.example.ru;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
X-Forwarded-For کے بغیر ایپلیکیشن ہر درخواست کو 127.0.0.1 سے آنے والی سمجھتی ہے، اور IP پر مبنی کوئی بھی پابندی کام کرنا چھوڑ دیتی ہے۔
پاتھ کے مطابق
location /api/ {
proxy_pass http://127.0.0.1:8000/;
}
یہاں proxy_pass میں آخری سلیش اہم ہے: اس کے ساتھ /api پریفکس ہٹ جاتا ہے اور ایپلیکیشن کو /users موصول ہوتا ہے؛ اس کے بغیر اسے /api/users موصول ہوتا ہے۔ پراکسی پر ہونے والے آدھے ”پراسرار 404s“ کی وجہ بالکل یہی ہوتی ہے۔
WebSocket اور طویل جوابات
location /ws/ {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
}
Upgrade/Connection جوڑے کے بغیر کنکشن ہینڈ شیک کے فوراً بعد ٹوٹ جاتا ہے؛ بڑھے ہوئے ٹائم آؤٹ کے بغیر یہ ایک منٹ کی خاموشی کے بعد ٹوٹ جاتا ہے۔
عام غلطیاں
| علامت | وجہ |
|---|---|
502 Bad Gateway | ایپلیکیشن چل نہیں رہی یا کسی مختلف پورٹ پر سن رہی ہے |
504 Gateway Time-out | ایپلیکیشن proxy_read_timeout سے زیادہ وقت لے رہی ہے |
| لامتناہی ری ڈائریکٹ | ایپلیکیشن کو HTTPS کا علم نہیں — X-Forwarded-Proto پاس کریں |
| فائل اپ لوڈ ناکام | client_max_body_size بہت چھوٹا ہے؛ ڈیفالٹ 1 MB ہے |
| ایپلیکیشن لاگز میں وہی IP | X-Forwarded-For پاس نہیں کیا جا رہا |
اگلا: متعدد سائٹس، سرٹیفکیٹ، Caddy خودکار HTTPS کے ساتھ۔
پراکسی پر موجود ایک سرٹیفکیٹ اس کے پیچھے چلنے والی تمام ایپلیکیشنز کو کور کرتا ہے۔
127.0.0.1پر اندرونی کنکشنز کو انکرپشن کی ضرورت نہیں — وہ مشین سے باہر کبھی نہیں جاتے۔