proxy-chain: her listener için ayrı hesaplar ve upstream'ler
prepareRequestFunction aracılığıyla listener'a özgü Basic hesapları ve upstream rotaları olan proxy-chain Server örnekleri oluşturun.
proxy-chain, dinlenen her bağlantı noktası için bir Server örneği çalıştırabilir. O listener'ın politikasını kimlik doğrulama callback'inde sabitleyin:
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()));
Uygulama, hesap değerlerini ve upstream URL'lerini normal yapılandırması aracılığıyla sağlar. Her callback kendi kuralını korur; bu nedenle hesabın 8001 numaralı bağlantı noktasında kabul edilmesi, o hesabın 8002 numaralı bağlantı noktasında kabul edildiği anlamına gelmez.
requestAuthentication true bir Basic proxy meydan okuması döndürür. Kimlik doğrulama gerektiğinde, o istek için upstreamProxyUrl yok sayılır. Başarılı gelen hesap ile upstream hesabı ayrı kimliklerdir.
Her upstream için desteklenen bir URL kullanın; gerektiğinde düzgün kodlanmış kimlik bilgileri dahil. Kimlik doğrulaması olmayan genel bir HTTP upstream için HTTP proxy listesinden bir aday seçin ve URL'sini kimlik bilgisi olmadan oluşturun. Atlanan upstream, başka bir otomatik proxy yerine doğrudan yönlendirmeyi seçer.
Örnek, yerel istemciler için loopback'e bağlanır. Başka bir makinenin bağlanması gerektiğinde amaçlanan arayüzü ilgili erişim politikasıyla birlikte bilinçli olarak bağlayın.
Sunucuları istemcilerinin iş yükü için çalışır durumda tutun. Sahipleri kapatma sırasında her sunucuyu desteklenen kapatma yöntemiyle kapatmalıdır; örnek o uygulamanın tam yaşam döngüsünü tanımlamaz.