proxy-chain: atskiri paskyros ir upstream kiekvienam listener
Kurkite proxy-chain Server egzempliorius su konkrečiam listener skirtomis Basic paskyromis ir upstream maršrutais per prepareRequestFunction.
proxy-chain gali paleisti vieną Server egzempliorių kiekvienam klausymo portui. Užfiksuokite to listener politiką jo autentifikavimo callback funkcijoje:
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()));
Programa pateikia paskyrų reikšmes ir upstream URL per įprastą konfigūraciją. Kiekvienas callback išlaiko savo taisyklę, todėl paskyros priėmimas 8001 porte nepriima šios paskyros 8002 porte.
requestAuthentication true grąžina Basic proxy iššūkį. Kai reikalingas autentifikavimas, upstreamProxyUrl šiai užklausai ignoruojamas. Sėkminga įeinanti paskyra ir upstream paskyra yra atskiri tapatumai.
Naudokite palaikomą URL kiekvienam upstream, įskaitant teisingai užkoduotus prisijungimo duomenis, kai reikia. Viešam HTTP upstream be autentifikavimo pasirinkite kandidatą iš HTTP proxy sąrašo ir sukurkite jo URL be prisijungimo duomenų. Praleistas upstream pasirenka tiesioginį perdavimą, o ne kitą automatinį proxy.
Pavyzdys susieja loopback vietiniams klientams. Sąmoningai susiekite numatytą sąsają, kai turi prisijungti kitas kompiuteris, su atitinkama prieigos politika.
Palaikykite serverius gyvus jų klientų darbo krūviui. Jų savininkas išjungdamas turėtų uždaryti kiekvieną serverį palaikomu uždarymo metodu; pavyzdys neapibrėžia viso tos programos gyvavimo ciklo.