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

កម្មវិធីផ្តល់តម្លៃគណនី និង URL upstream តាមរយៈការកំណត់រចនាសម្ព័ន្ធធម្មតារបស់វា។ callback នីមួយៗរក្សាច្បាប់ផ្ទាល់ខ្លួន ដូច្នេះការទទួលយកគណនីនៅច្រក 8001 មិនទទួលយកគណនីនោះនៅច្រក 8002 ទេ។

requestAuthentication true ត្រឡប់ការប្រឈមមុខ proxy Basic។ នៅពេលត្រូវការផ្ទៀងផ្ទាត់ នោះ upstreamProxyUrl ត្រូវបានមិនអើពើសម្រាប់សំណើនោះ។ គណនីចូលដែលជោគជ័យ និងគណនី upstream គឺជាអត្តសញ្ញាណដាច់ដោយឡែក។

ប្រើ URL ដែលគាំទ្រសម្រាប់ upstream នីមួយៗ រួមទាំងព័ត៌មានសម្ងាត់ដែលបានអ៊ិនកូដត្រឹមត្រូវ នៅពេលចាំបាច់។ សម្រាប់ upstream HTTP សាធារណៈដែលគ្មានការផ្ទៀងផ្ទាត់ សូមជ្រើសរើសបេក្ខជនពីបញ្ជី proxy HTTP ហើយបង្កើត URL របស់វាដោយគ្មានព័ត៌មានសម្ងាត់។ upstream ដែលបានលុបចោលជ្រើសរើសការបញ្ជូនផ្ទាល់ជំនួសឱ្យ proxy ស្វ័យប្រវត្តិផ្សេងទៀត។

ឧទាហរណ៍ភ្ជាប់ loopback សម្រាប់អតិថិជនក្នុងតំបន់។ ភ្ជាប់ចំណុចប្រទាក់ដែលបានបម្រុងទុកដោយចេតនា នៅពេលម៉ាស៊ីនផ្សេងទៀតត្រូវភ្ជាប់ ជាមួយគោលនយោបាយចូលដំណើរការដែលត្រូវគ្នា។

រក្សាម៉ាស៊ីនមេឱ្យនៅរស់សម្រាប់បន្ទុកការងាររបស់អតិថិជន។ ម្ចាស់របស់ពួកគេគួរបិទម៉ាស៊ីនមេនីមួយៗតាមវិធីបិទដែលគាំទ្រនៅពេលបិទ។ ឧទាហរណ៍មិនកំណត់វដ្តជីវិតពេញលេញរបស់កម្មវិធីនោះទេ។

អត្ថបទពាក់ព័ន្ធ