1

我正在尝试为我在 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 中关闭,那就太好了。

如果您需要任何其他信息,请告诉我。

4

0 回答 0