proxy-chain: odvojeni računi i upstreami za svaki listener
Kreirajte proxy-chain Server instance sa Basic računima i upstream rutama specifičnim za listener kroz prepareRequestFunction.
proxy-chain može pokretati jednu Server instancu po portu za slušanje. Zabeležite politiku tog listenera u njegovom callbacku za autentifikaciju:
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()));
Aplikacija dostavlja vrednosti računa i upstream URL-ove kroz svoju uobičajenu konfiguraciju. Svaki callback zadržava sopstveno pravilo, pa prihvatanje računa na portu 8001 ne prihvata taj račun na portu 8002.
requestAuthentication true vraća Basic proxy izazov. Kada je autentifikacija potrebna, upstreamProxyUrl se zanemaruje za taj zahtev. Uspešan dolazni račun i upstream račun su različiti identiteti.
Koristite podržani URL za svaki upstream, uključujući ispravno kodirane akreditive kada je potrebno. Za javni HTTP upstream bez autentifikacije izaberite kandidata sa HTTP proxy liste i sastavite njegov URL bez akreditiva. Izostavljeni upstream bira direktno prosleđivanje umesto drugog automatskog proxyja.
Primer vezuje loopback za lokalne klijente. Namerno vežite predviđeni interfejs kada druga mašina mora da se poveže, uz odgovarajuću politiku pristupa.
Držite servere živim za radno opterećenje njihovih klijenata. Njihov vlasnik treba da zatvori svaki server podržanom metodom zatvaranja pri gašenju; primer ne definiše puni životni ciklus te aplikacije.