proxy-chain- listener တစ်ခုစီအတွက် သီးခြား အကောင့်များနှင့် upstream များ
prepareRequestFunction မှတစ်ဆင့် listener သီးသန့် Basic အကောင့်များနှင့် upstream လမ်းကြောင်းများပါသော proxy-chain Server မိတ္တူများကို ဖန်တီးပါ။
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 proxy စိန်ခေါ်မှုကို ပြန်ပေးသည်။ အတည်ပြုခြင်း လိုအပ်သောအခါ ထိုတောင်းဆိုမှုအတွက် upstreamProxyUrl ကို လျစ်လျူရှုသည်။ အောင်မြင်သော အဝင် အကောင့်နှင့် upstream အကောင့်သည် သီးခြား အထောက်အထားများ ဖြစ်သည်။
upstream တစ်ခုစီအတွက် ပံ့ပိုးထားသော URL ကို အသုံးပြုပါ၊ လိုအပ်ပါက မှန်ကန်စွာ ကုဒ်လုပ်ထားသော အထောက်အထားများ အပါအဝင်။ အတည်ပြုခြင်းမရှိသော အများသုံး HTTP upstream အတွက် HTTP proxy စာရင်းမှ ကိုယ်စားလှယ်တစ်ဦးကို ရွေးပြီး အထောက်အထားမပါဘဲ ၎င်း၏ URL ကို တည်ဆောက်ပါ။ ချန်လှပ်ထားသော upstream သည် အခြား အလိုအလျောက် proxy အစား တိုက်ရိုက် ပေးပို့ခြင်းကို ရွေးသည်။
ဥပမာသည် ဒေသခံ client များအတွက် loopback ကို ချိတ်ဆက်သည်။ အခြားစက်တစ်ခု ချိတ်ဆက်ရန် လိုအပ်သောအခါ သက်ဆိုင်ရာ ဝင်ရောက်ခွင့် မူဝါဒနှင့်အတူ ရည်ရွယ်ထားသော အင်တာဖေ့စ်ကို တမင်ချိတ်ဆက်ပါ။
ဆာဗာများကို ၎င်းတို့၏ client များ၏ အလုပ်ပမာဏအတွက် ရှင်သန်စေပါ။ ပိုင်ရှင်သည် ပိတ်သိမ်းချိန်တွင် ဆာဗာတစ်ခုစီကို ၎င်း၏ ပံ့ပိုးထားသော ပိတ်နည်းဖြင့် ပိတ်သင့်သည်၊ ဥပမာသည် ထို အပလီကေးရှင်း၏ ပြည့်စုံသော ဘဝစက်ဝန်းကို မသတ်မှတ်ပါ။