proxy-chain: akaunti na upstream tofauti kwa kila listener
Unda instansi za Server za proxy-chain zenye akaunti za Basic na njia za upstream maalum kwa kila listener kupitia prepareRequestFunction.
proxy-chain inaweza kuendesha instansi moja ya Server kwa kila bandari ya kusikiliza. Nasa sera ya listener huyo katika callback yake ya uthibitishaji:
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()));
Programu hutoa thamani za akaunti na URL za upstream kupitia usanidi wake wa kawaida. Kila callback huhifadhi kanuni yake, kwa hivyo kukubali akaunti kwenye bandari 8001 hakukubali akaunti hiyo kwenye bandari 8002.
requestAuthentication true hurudisha changamoto ya proksi Basic. Uthibitishaji unapohitajika, upstreamProxyUrl hupuuzwa kwa ombi hilo. Akaunti ya kuingia iliyofanikiwa na akaunti ya upstream ni utambulisho tofauti.
Tumia URL inayotumika kwa kila upstream, ikiwa ni pamoja na vitambulisho vilivyosimbwa ipasavyo inapohitajika. Kwa upstream ya HTTP ya umma isiyo na uthibitishaji, chagua mwombaji kutoka orodha ya proksi HTTP na uunde URL yake bila vitambulisho. Upstream iliyoachwa huchagua upelekaji wa moja kwa moja badala ya proksi nyingine ya kiotomatiki.
Mfano huo hufunga loopback kwa wateja wa ndani. Funga kiolesura kinachokusudiwa kwa makusudi wakati mashine nyingine inapaswa kuunganisha, pamoja na sera ya ufikiaji inayolingana.
Weka seva hai kwa mzigo wa kazi wa wateja wao. Mmiliki wao anapaswa kufunga kila seva kupitia njia yake ya kufunga inayotumika wakati wa kuzima; mfano haufafanui mzunguko kamili wa maisha ya programu hiyo.