proxy-chain voi ajaa yhden Server-instanssin kutakin kuunteluporttia kohden. Tallenna kyseisen listenerin käytäntö sen todennuksen callbackiin:

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()));

Sovellus toimittaa tilien arvot ja upstream-URL-osoitteet tavallisen kokoonpanonsa kautta. Jokainen callback säilyttää oman sääntönsä, joten tilin hyväksyminen portissa 8001 ei hyväksy tätä tiliä portissa 8002.

requestAuthentication true palauttaa Basic-proxy-haasteen. Kun todennus vaaditaan, upstreamProxyUrl jätetään huomiotta kyseisen pyynnön osalta. Onnistunut saapuva tili ja upstream-tili ovat erillisiä identiteettejä.

Käytä tuettua URL-osoitetta jokaiselle upstreamille, mukaan lukien oikein koodatut tunnistetiedot, kun se on tarpeen. Todentamattomalle julkiselle HTTP-upstreamille valitse ehdokas HTTP-proxyluettelosta ja rakenna sen URL ilman tunnistetietoja. Puuttuva upstream valitsee suoran välityksen toisen automaattisen proxyn sijaan.

Esimerkki sitoo loopbackin paikallisille asiakkaille. Sido aiottu rajapinta tarkoituksellisesti, kun toisen koneen on yhdistettävä, vastaavalla käyttöoikeuskäytännöllä.

Pidä palvelimet elossa niiden asiakkaiden työkuormaa varten. Niiden omistajan tulisi sulkea jokainen palvelin tuetulla sulkemismenetelmällä sammutettaessa; esimerkki ei määrittele kyseisen sovelluksen täyttä elinkaarta.

Aiheeseen liittyvät artikkelit