proxy-chain može pokretati jednu Server instancu po portu za slušanje. Zabilježite politiku tog listenera u njegovom callbacku za autentifikaciju:

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

Aplikacija dostavlja vrijednosti računa i upstream URL-ove kroz svoju uobičajenu konfiguraciju. Svaki callback zadržava vlastito pravilo, pa prihvatanje računa na portu 8001 ne prihvata taj račun na portu 8002.

requestAuthentication true vraća Basic proxy izazov. Kada je autentifikacija potrebna, upstreamProxyUrl se zanemaruje za taj zahtjev. Uspješan dolazni račun i upstream račun su različiti identiteti.

Koristite podržani URL za svaki upstream, uključujući ispravno kodirane akreditive kada je potrebno. Za javni HTTP upstream bez autentifikacije odaberite kandidata s HTTP proxy liste i sastavite njegov URL bez akreditiva. Izostavljeni upstream odabire direktno prosljeđivanje umjesto drugog automatskog proxyja.

Primjer veže loopback za lokalne klijente. Namjerno vežite predviđeni interfejs kada se druga mašina mora povezati, uz odgovarajuću politiku pristupa.

Držite servere živim za radno opterećenje njihovih klijenata. Njihov vlasnik treba zatvoriti svaki server podržanom metodom zatvaranja pri gašenju; primjer ne definira puni životni ciklus te aplikacije.

Povezani članci