proxy-chain: aðskildir reikningar og upstream fyrir hvern listener
Búðu til proxy-chain Server eintök með Basic reikningum og upstream leiðum sem eru sérstakar fyrir hvern listener í gegnum prepareRequestFunction.
proxy-chain getur keyrt eitt Server eintak fyrir hvern hlustunarport. Festu stefnu þess listener í auðkenningarsvari hans:
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()));
Forritið veitir reikningsgildin og upstream slóðirnar í gegnum venjulega stillingu sína. Hvert svar heldur sinni eigin reglu, þannig að að samþykkja reikninginn á porti 8001 samþykkir ekki þann reikning á porti 8002.
requestAuthentication true skilar Basic proxy áskorun. Þegar auðkenningar er krafist er upstreamProxyUrl hunsað fyrir þá beiðni. Árangursríkur innkomandi reikningur og upstream reikningurinn eru aðskildar auðkenni.
Notaðu studda slóð fyrir hvern upstream, þar á meðal rétt kóðuð skilríki þegar þess er þörf. Fyrir opinbert HTTP upstream án auðkenningar skaltu velja frambjóðanda úr HTTP proxy listanum og byggja slóðina án skilríkja. Uppskekinn upstream velur beina framsendingu í stað annars sjálfvirkrar proxy.
Dæmið bindur loopback fyrir staðbundna biðlara. Binddu ætlaða tengið viljandi þegar önnur vél þarf að tengjast, með samsvarandi aðgangsstefnu.
Haltu þjónunum lifandi fyrir vinnuálag biðlaranna. Eigandi þeirra ætti að loka hverjum þjóni með studdri lokunaraðferð við slokknun; dæmið skilgreinir ekki fullan lífsferil þess forrits.