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