proxy-chain kan een Server-instansie per luisterpoort laat loop. Vang daardie luisteraar se beleid in sy ouditifikasie-terugroepfunksie vas:

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

Die toepassing verskaf die rekeningwaardes en upstream-URL's deur sy normale konfigurasie. Elke terugroepfunksie hou sy eie reël, so om die rekening op poort 8001 te aanvaar, aanvaar nie daardie rekening op poort 8002 nie.

requestAuthentication true gee 'n Basic-proxy-uitdaging terug. Wanneer ouditifikasie vereis word, word upstreamProxyUrl vir daardie versoek geïgnoreer. 'n Suksesvolle inkomende rekening en die upstream-rekening is aparte identiteite.

Gebruik 'n ondersteunde URL vir elke upstream, insluitend behoorlik geënkodeerde geloofsbriewe wanneer dit vereis word. Vir 'n ongeoutentiseerde publieke HTTP-upstream, kies 'n kandidaat uit die HTTP-proxylys en bou sy URL sonder geloofsbriewe. 'n Weggelaatde upstream kies direkte aanstuur eerder as 'n ander outomatiese proxy.

Die voorbeeld bind loopback vir plaaslike kliënte. Bind die beoogde koppelvlak doelbewus wanneer 'n ander masjien moet koppel, met die ooreenstemmende toegangsbeleid.

Hou die bedieners aan die lewe vir hul kliënte se werk. Hul eienaar moet elke bediener deur sy ondersteunde sluitmetode sluit by afskakeling; die voorbeeld definieer nie daardie toepassing se volledige lewensiklus nie.

Verwante artikels