尝试从代理

时间:2017-09-14 08:15:14

标签: express reverse-proxy isam

我正在使用由Express提供支持的ISAM代理应用程序(我们称之为Proxy-APP)。 ISAM使用反向代理概念将流量重定向到后端快速应用程序(称之为App)。

问题:

我们正在使用App编写的下载功能。与下面类似: -

router.get('/fileDownload', function (req, res, next) {
  res.setHeader('Content-disposition', 'attachment;filename=' + req.query.fileName);
  request(req.query.url).pipe(res);
});

上面的代码向外部URL发出请求(包含一些实际文件),然后管道响应。 间歇性我们在Proxy-App日志中获得502 Bad Gateway。

当我们得到502错误时有模式。如果Proxy-App在2分钟内未收到应用程序的响应,则会出现502错误。

我们如何更有效地编写上述代码,以便当响应不是来自req.query.url时,我们可以处理错误。

OR

我们可以在Proxy-App中修改什么,以便我们可以增加2分钟超时。以下是http-proxy-middleware的上下文和选项。

  var context = '/';
  var options = {
    target: TARGET,
    changeOrigin: true,
    logLevel: 'info',
    agent: https.globalAgent,
    timeout: 3600 * 1000
  };

  var proxy = proxyMiddleware(context, options);
  app.use(proxy);

注意:超时超时对解决问题没有任何影响。

编辑:request来自node.js的模块。

1 个答案:

答案 0 :(得分:0)

首先,ISAM没有问题。他们回应说,502 Bad Gateway错误来自后备服务器。即我们的应用程序。

第一个问题是默认超时为2分钟。这是在节点see link中硬编码的。 This blog帮我识别出来。

但是在提升了服务器/请求/响应的setTimeout之后,我得到了更长时间的文件。基本上它没有超时。 (没有502错误)。

这仍然没有解决我的问题。我想要它快,而不是一段时间后。谷歌搜索更多给了我一个名为hyperquest的节点模块。这是针对类似问题的设计。它已经提到request模块对通过http传输数据有一些限制。