proxy-chain: แยกบัญชีและ upstream สำหรับ listener แต่ละตัว
สร้างอินสแตนซ์ Server ของ proxy-chain ที่มีบัญชี 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()));
แอปพลิเคชันจัดหาค่าบัญชีและ URL ของ upstream ผ่านการกำหนดค่าตามปกติ แต่ละ callback เก็บกฎของตัวเอง ดังนั้นการยอมรับบัญชีบนพอร์ต 8001 จึงไม่ยอมรับบัญชีนั้นบนพอร์ต 8002
requestAuthentication true จะคืนคำท้าทาย proxy แบบ Basic เมื่อจำเป็นต้องยืนยันตัวตน upstreamProxyUrl จะถูกละเว้นสำหรับคำขอนั้น บัญชีขาเข้าที่สำเร็จและบัญชี upstream เป็นตัวตนที่แยกจากกัน
ใช้ URL ที่รองรับสำหรับแต่ละ upstream รวมถึงข้อมูลรับรองที่เข้ารหัสอย่างถูกต้องเมื่อจำเป็น สำหรับ upstream HTTP สาธารณะที่ไม่มีการยืนยันตัวตน ให้เลือกผู้สมัครจากรายการพร็อกซี HTTP และสร้าง URL โดยไม่มีข้อมูลรับรอง upstream ที่ละเว้นจะเลือกการส่งต่อโดยตรงแทนพร็อกซีอัตโนมัติอื่น
ตัวอย่างผูก loopback สำหรับไคลเอนต์ภายในเครื่อง จงผูกอินเทอร์เฟซที่ตั้งใจไว้อย่างจงใจเมื่อเครื่องอื่นต้องเชื่อมต่อ พร้อมนโยบายการเข้าถึงที่สอดคล้องกัน
รักษาเซิร์ฟเวอร์ให้ทำงานอยู่สำหรับภาระงานของไคลเอนต์ เจ้าของควรปิดแต่ละเซิร์ฟเวอร์ผ่านวิธีปิดที่รองรับเมื่อปิดระบบ ตัวอย่างไม่ได้กำหนดวงจรชีวิตทั้งหมดของแอปพลิเคชันนั้น