proxy-chain ప్రతి వినిపించే పోర్టుకు ఒక Server ఉదాహరణను అమలు చేయగలదు. ఆ listener యొక్క విధానాన్ని దాని ప్రామాణీకరణ కాల్‌బ్యాక్‌లో నమోదు చేయండి:

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 లను అందిస్తుంది. ప్రతి కాల్‌బ్యాక్ తన స్వంత నియమాన్ని ఉంచుకుంటుంది, కాబట్టి పోర్ట్ 8001 లో ఖాతాను అంగీకరించడం పోర్ట్ 8002 లో ఆ ఖాతాను అంగీకరించదు.

requestAuthentication true ఒక Basic ప్రాక్సీ ఛాలెంజ్‌ను తిరిగి ఇస్తుంది. ప్రామాణీకరణ అవసరమైనప్పుడు ఆ అభ్యర్థనకు upstreamProxyUrl నిర్లక్ష్యం చేయబడుతుంది. విజయవంతమైన ఇన్‌బౌండ్ ఖాతా మరియు upstream ఖాతా వేర్వేరు గుర్తింపులు.

ప్రతి upstream కు మద్దతు ఉన్న URL ఉపయోగించండి, అవసరమైనప్పుడు సరిగ్గా ఎన్‌కోడ్ చేసిన ఆధారాలుతో సహా. ప్రామాణీకరణ లేని పబ్లిక్ HTTP upstream కోసం HTTP ప్రాక్సీ జాబితా నుండి అభ్యర్థిని ఎంచుకోండి మరియు ఆధారాలు లేకుండా దాని URL ను నిర్మించండి. వదిలివేసిన upstream మరొక స్వయంచాలక ప్రాక్సీకి బదులుగా నేరుగా ఫార్వర్డింగ్‌ను ఎంచుకుంటుంది.

ఉదాహరణ స్థానిక క్లయింట్ల కోసం loopback ను బైండ్ చేస్తుంది. మరొక మెషీన్ కనెక్ట్ కావాల్సినప్పుడు సంబంధిత యాక్సెస్ విధానంతో ఉద్దేశించిన ఇంటర్‌ఫేస్‌ను ఉద్దేశపూర్వకంగా బైండ్ చేయండి.

సర్వర్లను వాటి క్లయింట్ల పనిభారం కోసం సజీవంగా ఉంచండి. వాటి యజమాని షట్‌డౌన్ సమయంలో ప్రతి సర్వర్‌ను దాని మద్దతు ఉన్న మూసివేత పద్ధతి ద్వారా మూసివేయాలి; ఉదాహరణ ఆ అప్లికేషన్ యొక్క పూర్తి జీవిత చక్రాన్ని నిర్వచించదు.

సంబంధిత వ్యాసాలు