proxy-chain: separate kontoer og upstreams for hver listener
Opprett proxy-chain Server-instanser med listener-spesifikke Basic-kontoer og upstream-ruter via prepareRequestFunction.
proxy-chain kan kjøre én Server-instans per lyttende port. Fest retningslinjene til den listeneren i autentiserings-callbacken:
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()));
Applikasjonen leverer kontoverdiene og upstream-URL-ene gjennom sin vanlige konfigurasjon. Hver callback beholder sin egen regel, så å godta kontoen på port 8001 godtar ikke den kontoen på port 8002.
requestAuthentication true returnerer en Basic-proxy-utfordring. Når autentisering kreves, ignoreres upstreamProxyUrl for den forespørselen. En vellykket innkommende konto og upstream-kontoen er forskjellige identiteter.
Bruk en støttet URL for hver upstream, inkludert riktig kodede påloggingsdetaljer når det kreves. For en offentlig HTTP-upstream uten autentisering, velg en kandidat fra HTTP-proxylisten og bygg URL-en uten påloggingsdetaljer. En utelatt upstream velger direkte videresending i stedet for en annen automatisk proxy.
Eksempelet binder loopback for lokale klienter. Bind grensesnittet som er tiltenkt bevisst når en annen maskin må koble til, med den tilsvarende tilgangspolicyen.
Hold serverne i live for arbeidsbelastningen til klientene deres. Eieren deres bør lukke hver server via sin støttede lukkemetode ved avslutning; eksempelet definerer ikke den applikasjonens fulle livssyklus.