Το 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, συμπεριλαμβανομένων σωστά κωδικοποιημένων διαπιστευτηρίων όταν απαιτείται. Για έναν δημόσιο HTTP upstream χωρίς έλεγχο ταυτότητας, επιλέξτε έναν υποψήφιο από τη λίστα διακομιστών μεσολάβησης HTTP και δημιουργήστε τη URL του χωρίς διαπιστευτήρια. Ένας upstream που παραλείπεται επιλέγει άμεση προώθηση αντί για άλλο αυτόματο proxy.

Το παράδειγμα δεσμεύει loopback για τοπικούς πελάτες. Δεσμεύστε σκόπιμα τη διεπαφή που προορίζεται όταν πρέπει να συνδεθεί άλλο μηχάνημα, με την αντίστοιχη πολιτική πρόσβασης.

Διατηρήστε τους διακομιστές ενεργούς για τον φόρτο εργασίας των πελατών τους. Ο ιδιοκτήτης τους πρέπει να κλείνει κάθε διακομιστή μέσω της υποστηριζόμενης μεθόδου κλεισίματος κατά τον τερματισμό· το παράδειγμα δεν ορίζει τον πλήρη κύκλο ζωής αυτής της εφαρμογής.

Σχετικά άρθρα