proxy-chain poate rula o instanță Server pentru fiecare port de ascultare. Înregistrați politica acelui listener în callback-ul său de autentificare:

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

Aplicația furnizează valorile conturilor și URL-urile upstream prin configurația sa obișnuită. Fiecare callback își păstrează propria regulă, așa că acceptarea contului pe portul 8001 nu acceptă acel cont pe portul 8002.

requestAuthentication true returnează o provocare proxy Basic. Când autentificarea este necesară, upstreamProxyUrl este ignorat pentru acea cerere. Un cont de intrare valid și contul upstream sunt identități distincte.

Folosiți un URL acceptat pentru fiecare upstream, inclusiv credențiale codificate corect când este necesar. Pentru un upstream HTTP public fără autentificare, alegeți un candidat din lista de proxy HTTP și construiți URL-ul fără credențiale. Un upstream omis selectează redirecționarea directă în locul altui proxy automat.

Exemplul leagă loopback pentru clienții locali. Legați deliberat interfața dorită atunci când o altă mașină trebuie să se conecteze, cu politica de acces corespunzătoare.

Mențineți serverele active pentru încărcarea clienților lor. Proprietarul lor ar trebui să închidă fiecare server prin metoda sa de închidere acceptată la oprire; exemplul nu definește ciclul de viață complet al acelei aplicații.

Articole similare