proxy-chain: odvojeni računi i upstreami za svaki listener
Stvorite proxy-chain Server instance s Basic računima i upstream rutama specifičnima za listener kroz prepareRequestFunction.
proxy-chain može pokretati jednu Server instancu po portu za slušanje. Zabiljež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 vrijednosti računa i upstream URL-ove kroz svoju uobičajenu konfiguraciju. Svaki callback zadržava vlastito pravilo, pa prihvaćanje računa na portu 8001 ne prihvaća taj račun na portu 8002.
requestAuthentication true vraća Basic proxy izazov. Kada je autentifikacija potrebna, upstreamProxyUrl se zanemaruje za taj zahtjev. Uspješan dolazni račun i upstream račun različiti su identiteti.
Koristite podržani URL za svaki upstream, uključujući ispravno kodirane vjerodajnice kada je potrebno. Za javni HTTP upstream bez autentifikacije odaberite kandidata s HTTP popisa proxyja i sastavite njegov URL bez vjerodajnica. Izostavljeni upstream odabire izravno prosljeđivanje umjesto drugog automatskog proxyja.
Primjer veže loopback za lokalne klijente. Namjerno vežite predviđeno sučelje kada se drugo računalo mora povezati, uz odgovarajuću politiku pristupa.
Držite poslužitelje živima za radno opterećenje njihovih klijenata. Njihov vlasnik treba zatvoriti svaki poslužitelj podržanom metodom zatvaranja pri gašenju; primjer ne definira puni životni ciklus te aplikacije.