昨日の午後、nodejsで遊び始めました。今朝、私はプロキシ サーバーの作成を開始しました。リクエストを受信したら、次の要件があります。
- 認証チェックを実行します (request() を介して)
- 認証チェックがtrueと評価された場合、実際のリクエストを行います(プロキシ)
- それ以外の場合は、リダイレクト
すべてが正しく機能し、実際のプロキシ リクエスト (proxy var に割り当てられます) を除外します。呼び出されていないか、少なくとも応答が要求に返されていません。または、nodejsの非同期動作に関係していると思われる別の何か。
追記:「勝て!」コンソールに出力されます。
どんな考えでも大歓迎です。
var server = httpProxy.createServer(function(request, response, proxy) {
var requestHostname = request.headers['x-forwarded-host'];
var configFile = './config/'+requestHostname+'.js';
if(path.existsSync(configFile))
{
var config = require(configFile);
var authProxy = requester({
url: config.proxyRequest.url+config.proxyRequest.defaultPath,
port: 443,
method: request.method
}, function(error, proxyResp, body) {
if(config.methods.authCheck(body))
{
console.log('Win!');
proxy = requester({
url: 'http://www.google.com',
port: 443,
method: request.method
});
// Pipe request and response back
request.pipe(proxy);
proxy.pipe(response);
}
else
{
response.writeHead(300, 'Forbidden', {
'Location': globalConf.portalUrl
});
response.end();
}
});
}
else
{
response.writeHeader(400);
response.write('404: The requested URL '+requestHostname+' does not exist.');
response.end();
}
response.addListener('end', function() {
console.log('Ending it');
})
});