proxy-chain: отделни акаунти и upstream за всеки listener
Създавайте Server инстанции на proxy-chain с Basic акаунти и upstream маршрути за конкретен listener чрез prepareRequestFunction.
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 за локални клиенти. Обвържете желания интерфейс умишлено, когато трябва да се свърже друга машина, със съответната политика за достъп.
Поддържайте сървърите живи за натоварването на техните клиенти. Собственикът им трябва да затваря всеки сървър чрез поддържания метод за затваряне при спиране; примерът не дефинира пълния жизнен цикъл на това приложение.