proxy-chain: ਹਰ listener ਲਈ ਵੱਖਰੇ ਖਾਤੇ ਅਤੇ upstream
prepareRequestFunction ਰਾਹੀਂ listener-ਵਿਸ਼ੇਸ਼ Basic ਖਾਤਿਆਂ ਅਤੇ upstream ਰਸਤਿਆਂ ਵਾਲੇ proxy-chain Server ਉਦਾਹਰਨ ਬਣਾਓ।
proxy-chain ਹਰ ਸੁਣਨ ਵਾਲੇ ਪੋਰਟ ਲਈ ਇੱਕ Server ਉਦਾਹਰਨ ਚਲਾ ਸਕਦਾ ਹੈ। ਉਸ listener ਦੀ ਨੀਤੀ ਉਸ ਦੇ ਪ੍ਰਮਾਣਿਕਤਾ ਕਾਲਬੈਕ ਵਿੱਚ ਦਰਜ ਕਰੋ:
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()));
ਐਪਲੀਕੇਸ਼ਨ ਆਪਣੀ ਆਮ ਸੰਰਚਨਾ ਰਾਹੀਂ ਖਾਤਿਆਂ ਦੇ ਮੁੱਲ ਅਤੇ upstream URL ਦਿੰਦਾ ਹੈ। ਹਰ ਕਾਲਬੈਕ ਆਪਣਾ ਨਿਯਮ ਰੱਖਦਾ ਹੈ, ਇਸ ਲਈ ਪੋਰਟ 8001 'ਤੇ ਖਾਤਾ ਸਵੀਕਾਰ ਕਰਨਾ ਪੋਰਟ 8002 'ਤੇ ਉਹ ਖਾਤਾ ਸਵੀਕਾਰ ਨਹੀਂ ਕਰਦਾ।
requestAuthentication true ਇੱਕ Basic ਪ੍ਰੌਕਸੀ ਚੁਣੌਤੀ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਜਦੋਂ ਪ੍ਰਮਾਣਿਕਤਾ ਲੋੜੀਂਦੀ ਹੋਵੇ, ਉਸ ਬੇਨਤੀ ਲਈ upstreamProxyUrl ਅਣਡਿੱਠਾ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਸਫਲ ਆਉਣ ਵਾਲਾ ਖਾਤਾ ਅਤੇ upstream ਖਾਤਾ ਵੱਖਰੀਆਂ ਪਛਾਣਾਂ ਹਨ।
ਹਰ upstream ਲਈ ਸਮਰਥਿਤ URL ਵਰਤੋ, ਲੋੜ ਪੈਣ 'ਤੇ ਠੀਕ ਤਰ੍ਹਾਂ ਐਨਕੋਡ ਕੀਤੇ ਪ੍ਰਮਾਣ-ਪੱਤਰ ਸਮੇਤ। ਬਿਨਾਂ ਪ੍ਰਮਾਣਿਕਤਾ ਵਾਲੇ ਜਨਤਕ HTTP upstream ਲਈ HTTP ਪ੍ਰੌਕਸੀ ਸੂਚੀ ਵਿੱਚੋਂ ਉਮੀਦਵਾਰ ਚੁਣੋ ਅਤੇ ਪ੍ਰਮਾਣ-ਪੱਤਰਾਂ ਤੋਂ ਬਿਨਾਂ ਇਸ ਦਾ URL ਬਣਾਓ। ਛੱਡਿਆ ਗਿਆ upstream ਕਿਸੇ ਹੋਰ ਆਟੋਮੈਟਿਕ ਪ੍ਰੌਕਸੀ ਦੀ ਥਾਂ ਸਿੱਧੀ ਫਾਰਵਰਡਿੰਗ ਚੁਣਦਾ ਹੈ।
ਉਦਾਹਰਨ ਸਥਾਨਕ ਕਲਾਇੰਟਾਂ ਲਈ loopback ਬੰਨ੍ਹਦੀ ਹੈ। ਜਦੋਂ ਕੋਈ ਹੋਰ ਮਸ਼ੀਨ ਜੁੜਨੀ ਹੋਵੇ ਤਾਂ ਸੰਬੰਧਿਤ ਪਹੁੰਚ ਨੀਤੀ ਨਾਲ ਇੱਛਤ ਇੰਟਰਫੇਸ ਜਾਣ-ਬੁੱਝ ਕੇ ਬੰਨ੍ਹੋ।
ਸਰਵਰਾਂ ਨੂੰ ਉਨ੍ਹਾਂ ਦੇ ਕਲਾਇੰਟਾਂ ਦੇ ਕੰਮ ਦੇ ਭਾਰ ਲਈ ਜੀਵਿਤ ਰੱਖੋ। ਉਨ੍ਹਾਂ ਦੇ ਮਾਲਕ ਨੂੰ ਸ਼ਟਡਾਊਨ ਸਮੇਂ ਹਰ ਸਰਵਰ ਨੂੰ ਇਸ ਦੀ ਸਮਰਥਿਤ ਬੰਦ ਕਰਨ ਵਿਧੀ ਨਾਲ ਬੰਦ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ; ਉਦਾਹਰਨ ਉਸ ਐਪਲੀਕੇਸ਼ਨ ਦਾ ਪੂਰਾ ਜੀਵਨ-ਚੱਕਰ ਪਰਿਭਾਸ਼ਿਤ ਨਹੀਂ ਕਰਦੀ।