Windows マシンで実行している内部ノード Express サーバー用に、インターネットに面したサーバーを作成しようとしています。この目的のために、ポートが開いた仮想UNIXボックスがあり、http-proxyを使用して、リクエストを内部サーバーにリダイレクトするプロキシサーバーを作成しています。
内部サーバーがダウンしている場合、ユーザーにカスタム HTML ページを表示したいと考えています。仮想UNIXボックスで次のコード(関連部分)を実行しています:
var proxy = httpProxy.createProxyServer({target:'http://'+addr.to[2]+':'+addr.to[3], xfwd:true, ws:true});
proxy.listen(addr.from[3], addr.from[2]);
winston.info('--Proxy server started listening on: '+addr.from[2]+':'+addr.from[3]);
proxy.on('error', function (err, req, res) {
console.log(err);
try{
winston.error('Middleware server down, Delivering 404 page');
res.writeHead(500, {
'Content-Type': 'text/html'
});
fs.readFile(__dirname+'/404.html', function (err, html) {
if (err) {
throw err;
}
res.write(html);
res.end();
});
}
catch(er)
{
winston.error('Error:'+er);
}
});
上記のコードは、Windows マシンで実行すると正常に動作します。何らかの理由で、UNIX ボックスで実行すると機能しません。なぜこれが起こっているのかを理解するのを手伝ってくれる人はいますか? ターゲット サーバーが http-proxy でダウンしたことを検出する別の手段を提供できれば幸いです。
追加情報が必要な場合はお知らせください。