proxy-chain: atsevišķi konti un upstream katram listener
Veidojiet proxy-chain Server eksemplārus ar listeneram raksturīgiem Basic kontiem un upstream maršrutiem, izmantojot prepareRequestFunction.
proxy-chain var darbināt vienu Server eksemplāru katram klausīšanās portam. Ierakstiet šī listener politikas noteikumus tā autentifikācijas callback funkcijā:
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()));
Lietotne nodrošina kontu vērtības un upstream URL ar savu parasto konfigurāciju. Katrs callback saglabā savu noteikumu, tāpēc konta pieņemšana portā 8001 nepieņem šo kontu portā 8002.
requestAuthentication true atgriež Basic proxy izaicinājumu. Kad nepieciešama autentifikācija, upstreamProxyUrl šim pieprasījumam tiek ignorēts. Veiksmīgs ienākošais konts un upstream konts ir atšķirīgas identitātes.
Izmantojiet atbalstītu URL katram upstream, tostarp pareizi kodētus akreditācijas datus, ja nepieciešams. Publiskam HTTP upstream bez autentifikācijas izvēlieties kandidātu no HTTP proxy saraksta un izveidojiet tā URL bez akreditācijas datiem. Izlaists upstream izvēlas tiešu pārsūtīšanu, nevis citu automātisku proxy.
Piemērs saista loopback vietējiem klientiem. Apzināti saistiet paredzēto saskarni, kad jāpieslēdzas citai iekārtai, ar atbilstošu piekļuves politiku.
Uzturiet serverus dzīvus to klientu darba slodzei. To īpašniekam izslēgšanas laikā jāaizver katrs serveris ar atbalstīto aizvēršanas metodi; piemērs nenosaka šīs lietotnes pilnu dzīves ciklu.