繁体   English   中英

expressJs反向代理不起作用

[英]expressJs reverse proxy not working

在localhost:8000上运行的appA->服务器是python(Django),并且始终崩溃我在localhost:8080上运行的expressJs服务器我是expressJs服务器的appA静态文件,并且运行良好。

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

这就是我所拥有的。 但这是行不通的。 当尝试以localhost:8000形式(localhost:8080)(例如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);

regex捕获以/ api /开头的所有请求,并捕获该前缀之后的所有内容,因此我们可以适当地转发它。

如果没有更多关于所看到错误的详细信息,很难确切地说出问题所在。 好消息是其他人已经解决了这个问题。 我有一个叫做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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM