proxy-chain có thể chạy một thực thể Server cho mỗi cổng lắng nghe. Ghi lại chính sách của listener đó trong callback xác thực của nó:

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

Ứng dụng cung cấp giá trị tài khoản và URL upstream thông qua cấu hình thông thường của nó. Mỗi callback giữ quy tắc riêng, vì vậy việc chấp nhận tài khoản trên cổng 8001 không chấp nhận tài khoản đó trên cổng 8002.

requestAuthentication true trả về một thách thức proxy Basic. Khi cần xác thực, upstreamProxyUrl bị bỏ qua cho yêu cầu đó. Tài khoản đến thành công và tài khoản upstream là hai danh tính khác nhau.

Dùng URL được hỗ trợ cho mỗi upstream, bao gồm thông tin đăng nhập được mã hóa đúng cách khi cần. Với upstream HTTP công khai không xác thực, hãy chọn một ứng viên từ danh sách proxy HTTP và tạo URL của nó mà không có thông tin đăng nhập. Upstream bị bỏ trống chọn chuyển tiếp trực tiếp thay vì một proxy tự động khác.

Ví dụ liên kết loopback cho các máy khách cục bộ. Hãy liên kết giao diện dự định một cách có chủ đích khi máy khác phải kết nối, cùng với chính sách truy cập tương ứng.

Giữ các máy chủ hoạt động cho khối lượng công việc của máy khách. Chủ sở hữu nên đóng từng máy chủ bằng phương thức đóng được hỗ trợ khi tắt; ví dụ không định nghĩa toàn bộ vòng đời của ứng dụng đó.

Bài viết liên quan