proxy-chain може да извршува една Server инстанца по порта за слушање. Запишете ја политиката на тој listener во неговиот callback за автентикација:

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

Апликацијата ги доставува вредностите на сметките и upstream URL-адресите преку својата вообичаена конфигурација. Секој callback ја задржува својата правило, така што прифаќањето на сметката на портата 8001 не ја прифаќа таа сметка на портата 8002.

requestAuthentication true враќа Basic прокси предизвик. Кога е потребна автентикација, upstreamProxyUrl се игнорира за тоа барање. Успешната влезна сметка и upstream сметката се различни идентитети.

Користете поддржана URL за секој upstream, вклучувајќи правилно кодирани акредитиви кога е потребно. За јавен HTTP upstream без автентикација изберете кандидат од списокот на HTTP прокси и изградете ја неговата URL без акредитиви. Испуштениот upstream избира директно проследување наместо друг автоматски прокси.

Примерот врзува loopback за локални клиенти. Намерно врзете го предвидениот интерфејс кога друга машина треба да се поврзе, со соодветната политика за пристап.

Одржувајте ги серверите живи за работното оптоварување на нивните клиенти. Нивниот сопственик треба да го затвори секој сервер преку неговиот поддржан метод за затворање при исклучување; примерот не го дефинира целосниот животен циклус на таа апликација.

Поврзани статии