proxy-chain: ар бир listener үчүн өзүнчө аккаунттар жана upstream'дар
prepareRequestFunction аркылуу listener'го тиешелүү Basic аккаунттары жана upstream маршруттары бар proxy-chain Server үлгүлөрүн түзүңүз.
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 аккаунту өзүнчө инсандыктар.
Ар бир upstream үчүн колдоого алынган URL колдонуңуз, зарыл болсо туура коддолгон эсептик маалыматтарды кошуп. Аутентификациясыз коомдук HTTP upstream үчүн HTTP прокси тизмесинен талапкер тандап, анын URL'ин эсептик маалыматтарсыз түзүңүз. Өткөрүп жиберилген upstream башка автоматтык проксинин ордуна түз жөнөтүүнү тандайт.
Мисал жергиликтүү кардарлар үчүн loopback байланыштырат. Башка машина туташууга тийиш болгондо, тиешелүү кирүү саясаты менен көздөлгөн интерфейсти атайын байланыштырыңыз.
Серверлерди кардарларынын жүгү үчүн тирүү кармаңыз. Алардын ээси өчүрүү учурунда ар бир серверди колдоого алынган жабуу ыкмасы менен жабышы керек; мисал ошол колдонмонун толук жашоо циклин аныктабайт.