【问题标题】:expressJs reverse proxy not workingexpressJs反向代理不起作用
【发布时间】:2015-05-01 18:37:52
【问题描述】:

在 localhost:8000 上运行 appA -> 服务器是 python(Django) 并且总是崩溃 我有一个在 localhost:8080 上运行的 expressJs 服务器 我是appA的expressJs服务器的静态文件,效果很好。

问题:我想在 expressJs 中创建一个反向代理以便我可以将任何传入的 api 请求转发到 express 服务器基本上,该应用应该与新的 expressJs 服务器一起工作(就像它过去与 Django/python 服务器一起工作一样)

这就是我所拥有的。但它不起作用。当尝试从 localhost:8080 访问 localhost:8000 中的端点时(例如 localhost:8080/api/my-profile),我得到一个错误。

forward.js:

var request = require('request')

module.exports = function(pattern, host){
  return function(req, res, next){
    if(req.url.match(pattern)){
      var db_path = req.url.match(pattern)[1]
        , db_url = [host, db_path].join('/');
      req.pipe(request[req.method.toLowerCase()](db_url)).pipe(res);
    }else{
      next();
    }
  }
}

app.js:

var forward = require('./path/to/forward.js');

// instantiate `app` et al

app.use(forward(/\/api\/(.*)/, TARGET_URL));

app.listen(8080);

正则表达式捕获以 /api/ 开头的任何请求,并捕获该前缀之后的任何内容,以便我们可以适当地转发它。

【问题讨论】:

    标签: python node.js express reverse-proxy


    【解决方案1】:

    如果没有关于您所看到的错误的更多详细信息,很难确切地说出问题出在哪里。好消息是其他人已经解决了这个问题。我在一个名为 proxy-middleware 的模块上运气不错。

    https://www.npmjs.com/package/proxy-middleware

    在您的情况下,我认为您可以摆脱 forward.js 并修改您的 app.js

    var proxy = require('proxy-middleware');
    var url = require('url');
    
    // instantiate `app` et al
    
    app.use(proxy('/api', url.parse(TARGET_URL)));
    
    app.listen(8080);
    

    【讨论】:

      猜你喜欢
      • 2017-10-15
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 1970-01-01
      • 2020-06-23
      • 2019-06-05
      相关资源
      最近更新 更多