proxy-chain: akun dan upstream terpisah untuk setiap listener
Buat instance Server proxy-chain dengan akun Basic dan rute upstream khusus listener melalui prepareRequestFunction.
proxy-chain dapat menjalankan satu instance Server per port pendengaran. Tangkap kebijakan listener tersebut di callback autentikasinya:
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 memasok nilai akun dan URL upstream melalui konfigurasi normalnya. Setiap callback menyimpan aturannya sendiri, sehingga menerima akun di port 8001 tidak menerima akun itu di port 8002.
requestAuthentication true mengembalikan tantangan proxy Basic. Saat autentikasi diperlukan, upstreamProxyUrl diabaikan untuk permintaan itu. Akun masuk yang berhasil dan akun upstream adalah identitas yang berbeda.
Gunakan URL yang didukung untuk setiap upstream, termasuk kredensial yang dikodekan dengan benar bila diperlukan. Untuk upstream HTTP publik tanpa autentikasi, pilih kandidat dari daftar proxy HTTP dan bangun URL-nya tanpa kredensial. Upstream yang dihilangkan memilih penerusan langsung alih-alih proxy otomatis lain.
Contoh mengikat loopback untuk klien lokal. Ikat antarmuka yang dimaksud secara sengaja ketika mesin lain harus terhubung, dengan kebijakan akses yang sesuai.
Jaga server tetap hidup untuk beban kerja kliennya. Pemiliknya harus menutup setiap server melalui metode penutupan yang didukung saat dimatikan; contoh tidak mendefinisikan siklus hidup lengkap aplikasi tersebut.