如何根据传入请求将我的Express应用重定向到其他端口

时间:2018-07-10 12:08:24

标签: node.js express proxy

我已经在我的Express应用程序中实现了动态路由,并且当我的主应用程序在不同的端口上运行时,我想在不同的端口上发送每个客户端请求。

现在我的app.js看起来像这样:

app.use('/:client/',middleware);

中间件:

var router  = require('express').Router({mergeParams: true});
router.get('/api/:module/:controller/:action',(req, res, next) => {
console.log(req.params);
var controller = "./server/leg/fe/clients/"+req.params.client+"/main/process/"+req.params.module+"/controllers/"+req.params.controller;
var controller_class = require(controller);
console.log(controller);
var controllerObj = new controller_class();
console.log(controllerObj);
var action = req.params.action;
res.send(controllerObj[action]());
});
module.exports = router;

现在,当我的app.js始终在3000上运行时,我想基于req.params.client值将每个客户端重定向到不同的端口。我确实进行了查找,但是他们创建了不同的express实例来实现这一点,但这不是我想要做的。有什么办法可以做到这一点?

编辑: 我尝试通过修改中间件来使用http.createServer,例如:

router.get('/api/:module/:controller/:action',(req, res, next) => {
console.log(req.params);
var controller = "./fe-server/legislations/fe/clients/"+req.params.client+"/main/process/"+req.params.module+"/controllers/"+req.params.controller;
var controller_class = require(controller);
console.log(controller);
var controllerObj = new controller_class();
console.log(controllerObj);
var action = req.params.action;
console.log(req.body.url);
var url = req.body.url;
http.createServer((req, res) => {
    proxy.web(req, res, {
    target: url.protocol
}, res.send(controllerObj[action]()));
}).listen(8000);
});

但是这里有很多事情令人困惑,我无法弄清楚目标URL,也不确定res.send的去向。

0 个答案:

没有答案