proxy-chain: प्रत्येक listener का लागि छुट्टै खाता र upstream
prepareRequestFunction मार्फत listener-विशेष Basic खाता र upstream मार्ग भएका proxy-chain Server उदाहरणहरू बनाउनुहोस्।
proxy-chain ले प्रत्येक सुन्ने पोर्टका लागि एउटा Server उदाहरण चलाउन सक्छ। त्यो listener को नीति यसको प्रमाणीकरण कलब्याकमा राख्नुहोस्:
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 उपलब्ध गराउँछ। प्रत्येक कलब्याकले आफ्नै नियम राख्छ, त्यसैले पोर्ट 8001 मा खाता स्वीकार गर्नु भनेको पोर्ट 8002 मा त्यो खाता स्वीकार गर्नु होइन।
requestAuthentication true ले Basic प्रोक्सी चुनौती फर्काउँछ। प्रमाणीकरण आवश्यक हुँदा त्यो अनुरोधका लागि upstreamProxyUrl बेवास्ता गरिन्छ। सफल आगमन खाता र upstream खाता छुट्टाछुट्टै पहिचान हुन्।
प्रत्येक upstream का लागि समर्थित URL प्रयोग गर्नुहोस्, आवश्यक पर्दा राम्ररी इन्कोड गरिएका प्रमाणहरू सहित। प्रमाणीकरण नभएको सार्वजनिक HTTP upstream का लागि HTTP प्रोक्सी सूचीबाट उम्मेदवार छान्नुहोस् र प्रमाण बिना यसको URL बनाउनुहोस्। छोडिएको upstream ले अर्को स्वचालित प्रोक्सीको सट्टा सिधा फर्वार्डिङ छान्छ।
उदाहरणले स्थानीय क्लाइन्टका लागि loopback बाँध्छ। अर्को मेसिन जोडिनु पर्दा सम्बन्धित पहुँच नीतिसहित इच्छित इन्टरफेस जानाजान बाँध्नुहोस्।
सर्भरहरूलाई तिनका क्लाइन्टको कार्यभारका लागि जीवित राख्नुहोस्। तिनका मालिकले शटडाउनमा प्रत्येक सर्भरलाई यसको समर्थित बन्द विधिबाट बन्द गर्नुपर्छ; उदाहरणले त्यो अनुप्रयोगको पूर्ण जीवनचक्र परिभाषित गर्दैन।