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 proxy изазов. Када је аутентификација потребна, upstreamProxyUrl се занемарује за тај захтев. Успешан долазни налог и upstream налог су различити идентитети.
Користите подржани URL за сваки upstream, укључујући исправно кодиране акредитиве када је потребно. За јавни HTTP upstream без аутентификације изаберите кандидата са HTTP proxy листе и саставите његов URL без акредитива. Изостављени upstream бира директно прослеђивање уместо другог аутоматског proxy-ја.
Пример везује loopback за локалне клијенте. Намерно вежите предвиђени интерфејс када друга машина мора да се повеже, уз одговарајућу политику приступа.
Држите сервере живим за радно оптерећење њихових клијената. Њихов власник треба да затвори сваки сервер подржаном методом затварања при гашењу; пример не дефинише пуни животни циклус те апликације.