proxy-chain: har bir listener uchun alohida hisoblar va upstreamlar
prepareRequestFunction orqali listenerga xos Basic hisoblari va upstream yo'llari bo'lgan proxy-chain Server nusxalarini yarating.
proxy-chain har bir tinglash porti uchun bitta Server nusxasini ishga tushirishi mumkin. O'sha listener siyosatini uning autentifikatsiya callbackida saqlang:
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()));
Ilova hisob qiymatlari va upstream URL manzillarini o'zining odatiy konfiguratsiyasi orqali taqdim etadi. Har bir callback o'z qoidasini saqlaydi, shuning uchun 8001 portida hisobni qabul qilish 8002 portida o'sha hisobni qabul qilmaydi.
requestAuthentication true Basic proksi sinovini qaytaradi. Autentifikatsiya talab qilinganda, o'sha so'rov uchun upstreamProxyUrl e'tiborsiz qoldiriladi. Muvaffaqiyatli kiruvchi hisob va upstream hisobi alohida shaxsiyatlardir.
Har bir upstream uchun qo'llab-quvvatlanadigan URL dan foydalaning, kerak bo'lsa to'g'ri kodlangan hisob ma'lumotlari bilan birga. Autentifikatsiyasiz ommaviy HTTP upstream uchun HTTP proksi ro'yxatidan nomzod tanlang va uning URL ini hisob ma'lumotlarisiz quring. O'tkazib yuborilgan upstream boshqa avtomatik proksi o'rniga to'g'ridan-to'g'ri yo'naltirishni tanlaydi.
Misol mahalliy mijozlar uchun loopbackni bog'laydi. Boshqa mashina ulanishi kerak bo'lganda tegishli kirish siyosati bilan mo'ljallangan interfeysni ataylab bog'lang.
Serverlarni ularning mijozlari ish yuklamasi uchun tirik saqlang. Ularning egasi o'chirish vaqtida har bir serverni qo'llab-quvvatlanadigan yopish usuli bilan yopishi kerak; misol o'sha ilovaning to'liq hayot siklini aniqlamaydi.