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 байланыстырады. Басқа машина қосылуы керек болса, тиісті қатынау саясатымен көзделген интерфейсті әдейі байланыстырыңыз.
Серверлерді клиенттерінің жүктемесі үшін тірі ұстаңыз. Олардың иесі өшіру кезінде әр серверді қолдау көрсетілетін жабу әдісімен жабуы керек; мысал сол қолданбаның толық өмірлік циклін анықтамайды.