proxy-chain hər dinləmə portu üçün bir Server nüsxəsi işlədə bilər. Həmin dinləyicinin siyasətini onun autentifikasiya callback-ində saxlayın:

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()));

Tətbiq hesab dəyərlərini və yuxarı axın URL-lərini adi konfiqurasiyası vasitəsilə təqdim edir. Hər callback öz qaydasını saxlayır, buna görə hesabın 8001 portunda qəbul edilməsi həmin hesabın 8002 portunda qəbul edilməsi demək deyil.

requestAuthentication true Basic proxy çağırışı qaytarır. Autentifikasiya tələb olunduqda həmin sorğu üçün upstreamProxyUrl nəzərə alınmır. Uğurlu gələn hesab və yuxarı axın hesabı ayrı kimliklərdir.

Hər yuxarı axın üçün dəstəklənən URL istifadə edin, lazım olduqda düzgün kodlanmış etimadnamələr daxil olmaqla. Autentifikasiyasız ictimai HTTP yuxarı axını üçün HTTP proxy siyahısından namizəd seçin və URL-ni etimadnaməsiz qurun. Buraxılmış yuxarı axın başqa avtomatik proxy əvəzinə birbaşa yönləndirmə seçir.

Nümunə yerli müştərilər üçün loopback bağlayır. Başqa maşın qoşulmalı olduqda uyğun giriş siyasəti ilə nəzərdə tutulan interfeysi qəsdən bağlayın.

Serverləri müştərilərinin iş yükü üçün canlı saxlayın. Sahibi söndürmə zamanı hər serveri dəstəklənən bağlama üsulu ilə bağlamalıdır; nümunə həmin tətbiqin tam həyat dövrünü müəyyən etmir.

Əlaqəli məqalələr