proxy-chain: באַזונדערע חשבונות און upstream פֿאַר יעדן listener
שאַפֿט proxy-chain Server אינסטאַנצן מיט Basic חשבונות און upstream וועגן ספּעציפֿיש פֿאַר יעדן listener דורך prepareRequestFunction.
proxy-chain קען פֿירן איין Server אינסטאַנץ פֿאַר יעדן הערן פּאָרט. פֿאַרכאַפּט די פּאָליטיק פֿון יענעם listener אין זיין אויטענטיפֿיקאַציע callback:
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־ן דורך איר נאָרמאַלער קאָנפֿיגוראַציע. יעדער callback האַלט זיין אייגענעם כלל, אַזוי אַז אָננעמען דעם חשבון אויף פּאָרט 8001 נעמט נישט אָן דעם חשבון אויף פּאָרט 8002.
requestAuthentication true גיט צוריק אַ Basic פּראָקסי אַרויסרופֿונג. ווען אויטענטיפֿיקאַציע איז פֿאָדערלעך, ווערט upstreamProxyUrl איגנאָרירט פֿאַר יענער בקשה. אַ דערפֿאָלגרייכער אַרייַנקומענדיקער חשבון און דער upstream חשבון זענען באַזונדערע אידענטיטעטן.
ניצט אַ געשטיצטע URL פֿאַר יעדן upstream, אַרײַנגערעכנט ריכטיק קאָדירטע באַווייַזן ווען נייטיק. פֿאַר אַ פּובליקן HTTP upstream אָן אויטענטיפֿיקאַציע, קלויבט אַ קאַנדידאַט פֿון דער HTTP פּראָקסי ליסטע און בויט זיין URL אָן באַווייַזן. אַן אויסגעלאָזטער upstream קלויבט דירעקטע וועטערפֿירונג אַנשטאָט אַן אַנדער אויטאָמאַטישער פּראָקסי.
דאָס ביישפּיל בינדט loopback פֿאַר לאָקאַלע קליענטן. בינדט באַוואוסטזיניק די געמיינטע צובינד ווען אַן אַנדער מאַשין מוז זיך פֿאַרבינדן, מיט דער פּאַסיקער צוטריט פּאָליטיק.
האַלט די סערווערס לעבעדיק פֿאַר דער אַרבעטסלאַסט פֿון זייערע קליענטן. זייער אייגנטימער זאָל פֿאַרמאַכן יעדן סערווער דורך זיין געשטיצטער פֿאַרמאַכונג מעטאָד ביים אויסשאַלטן; דאָס ביישפּיל דעפֿינירט נישט דעם פֿולן לעבנס־ציקל פֿון יענער אַפּליקאַציע.