proxy-chain: cuentas y upstreams separados para cada listener
Cree instancias Server de proxy-chain con cuentas Basic y rutas upstream específicas de cada listener mediante prepareRequestFunction.
proxy-chain puede ejecutar una instancia Server por cada puerto de escucha. Capture la política de ese listener en su callback de autenticació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()));
La aplicación proporciona los valores de las cuentas y las URL upstream mediante su configuración habitual. Cada callback conserva su propia regla, por lo que aceptar la cuenta en el puerto 8001 no acepta esa cuenta en el puerto 8002.
requestAuthentication true devuelve un desafío de proxy Basic. Cuando se requiere autenticación, upstreamProxyUrl se ignora para esa solicitud. Una cuenta entrante correcta y la cuenta upstream son identidades distintas.
Use una URL admitida para cada upstream, incluidas unas credenciales codificadas correctamente cuando sea necesario. Para un upstream HTTP público sin autenticación, elija un candidato de la lista de proxies HTTP y construya su URL sin credenciales. Un upstream omitido selecciona el reenvío directo en lugar de otro proxy automático.
El ejemplo enlaza loopback para clientes locales. Enlace la interfaz prevista de forma deliberada cuando otra máquina deba conectarse, con la política de acceso correspondiente.
Mantenga los servidores activos para la carga de sus clientes. Su propietario debería cerrar cada servidor mediante su método de cierre admitido al apagarse; el ejemplo no define el ciclo de vida completo de esa aplicación.