proxy-chain: llogari dhe upstream të ndara për çdo listener
Krijoni instanca Server të proxy-chain me llogari Basic dhe rrugë upstream specifike për listener përmes prepareRequestFunction.
proxy-chain mund të ekzekutojë një instancë Server për çdo port dëgjimi. Kapni politikën e atij listener në callback-un e vërtetimit:
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()));
Aplikacioni furnizon vlerat e llogarive dhe URL-të upstream përmes konfigurimit të tij normal. Çdo callback mban rregullin e vet, kështu që pranimi i llogarisë në portin 8001 nuk e pranon atë llogari në portin 8002.
requestAuthentication true kthen një sfidë proxy Basic. Kur kërkohet vërtetim, upstreamProxyUrl injorohet për atë kërkesë. Një llogari hyrëse e suksesshme dhe llogaria upstream janë identitete të ndryshme.
Përdorni një URL të mbështetur për çdo upstream, duke përfshirë kredenciale të koduara saktë kur kërkohet. Për një upstream HTTP publik pa vërtetim, zgjidhni një kandidat nga lista e proxy-ve HTTP dhe ndërtoni URL-në pa kredenciale. Një upstream i lënë jashtë zgjedh përcjelljen e drejtpërdrejtë në vend të një proxy tjetër automatik.
Shembulli lidh loopback për klientët lokalë. Lidhni me qëllim ndërfaqen e synuar kur një makinë tjetër duhet të lidhet, me politikën përkatëse të aksesit.
Mbani serverat gjallë për ngarkesën e klientëve të tyre. Pronari i tyre duhet të mbyllë çdo server përmes metodës së mbylljes së mbështetur në fikje; shembulli nuk përcakton ciklin e plotë të jetës së atij aplikacioni.