proxy-chain ہر سننے والے پورٹ کے لیے ایک Server نمونہ چلا سکتا ہے۔ اُس listener کی پالیسی اُس کے توثیق callback میں محفوظ کریں:

import { Server } from 'proxy-chain';

const listeners = [
  { port: 8001, user: userA, password: passwordA, upstream: upstreamA },
  { port: 8002, user: userB, password: passwordB, upstream: upstreamB },
];
const servers = listeners.map(rule => new Server({
  host: '127.0.0.1',
  port: rule.port,
  prepareRequestFunction: ({ username, password }) => ({
    requestAuthentication:
      username !== rule.user || password !== rule.password,
    upstreamProxyUrl: rule.upstream,
  }),
}));
await Promise.all(servers.map(server => server.listen()));

ایپلیکیشن اپنی معمول کی تشکیل کے ذریعے اکاؤنٹ کی قدریں اور upstream URL فراہم کرتی ہے۔ ہر callback اپنا قاعدہ رکھتا ہے، اس لیے پورٹ 8001 پر اکاؤنٹ قبول کرنا پورٹ 8002 پر وہ اکاؤنٹ قبول نہیں کرتا۔

requestAuthentication true ایک Basic پراکسی چیلنج واپس کرتا ہے۔ جب توثیق درکار ہو، اُس درخواست کے لیے upstreamProxyUrl نظر انداز کر دیا جاتا ہے۔ کامیاب آنے والا اکاؤنٹ اور upstream اکاؤنٹ الگ شناختیں ہیں۔

ہر upstream کے لیے معاون URL استعمال کریں، ضرورت ہو تو درست طریقے سے انکوڈ شدہ اسناد سمیت۔ بغیر توثیق والے عوامی HTTP upstream کے لیے HTTP پراکسی فہرست سے امیدوار چنیں اور اسناد کے بغیر اُس کا URL بنائیں۔ نظر انداز کیا گیا upstream کسی دوسرے خودکار پراکسی کی بجائے براہِ راست فارورڈنگ چنتا ہے۔

مثال مقامی کلائنٹس کے لیے loopback باندھتی ہے۔ جب کسی دوسری مشین کو جڑنا ہو تو متعلقہ رسائی پالیسی کے ساتھ مطلوبہ انٹرفیس جان بوجھ کر باندھیں۔

سرورز کو اُن کے کلائنٹس کے کام کے بوجھ کے لیے زندہ رکھیں۔ اُن کے مالک کو بندش کے وقت ہر سرور کو اُس کے معاون بند کرنے کے طریقے سے بند کرنا چاہیے؛ مثال اُس ایپلیکیشن کا مکمل زندگی کا چکر بیان نہیں کرتی۔

متعلقہ مضامین