我正在尝试为我在Windows机器上运行的内部节点快速服务器创建面向Internet的服务器。为此,我有一个打开端口的虚拟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中关闭,那将是很好的。
如果您需要任何其他信息,请与我们联系。