proxy-chain boleh menjalankan satu instans Server bagi setiap port mendengar. Rakam dasar listener itu dalam callback pengesahannya:

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

Aplikasi membekalkan nilai akaun dan URL upstream melalui konfigurasi biasanya. Setiap callback mengekalkan peraturannya sendiri, jadi menerima akaun pada port 8001 tidak menerima akaun itu pada port 8002.

requestAuthentication true mengembalikan cabaran proksi Basic. Apabila pengesahan diperlukan, upstreamProxyUrl diabaikan untuk permintaan itu. Akaun masuk yang berjaya dan akaun upstream ialah identiti yang berasingan.

Gunakan URL yang disokong untuk setiap upstream, termasuk kelayakan yang dikodkan dengan betul apabila perlu. Untuk upstream HTTP awam tanpa pengesahan, pilih calon daripada senarai proksi HTTP dan bina URL-nya tanpa kelayakan. Upstream yang ditinggalkan memilih pemajuan terus dan bukan proksi automatik yang lain.

Contoh mengikat loopback untuk klien tempatan. Ikat antara muka yang dimaksudkan secara sengaja apabila mesin lain perlu menyambung, dengan dasar akses yang sepadan.

Kekalkan pelayan hidup untuk beban kerja klien mereka. Pemiliknya harus menutup setiap pelayan melalui kaedah tutup yang disokong semasa dimatikan; contoh tidak mentakrifkan kitaran hayat penuh aplikasi itu.

Artikel berkaitan