在本地主机上运行一个appA :8000 ->服务器是python(Django),并且总是崩溃,我有一个运行在localhost上的->服务器:8080,我是appA的用于running服务器的静态文件,它工作得很好。
问题:我想在中创建一个反向代理,这样我就可以将任何传入的api请求转发给快速服务器。基本上,应用程序应该与新的服务器(就像以前的Django/python服务器一样)使用。
这是我所拥有的。但不起作用。当尝试访问localhost:8000 form 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/开头的任何请求,并捕获该前缀后面的任何内容,这样我们就可以适当地转发它。
发布于 2015-05-01 21:26:12
如果没有看到错误的更多细节,就很难确切地说出问题是什么。好消息是其他人已经解决了这个问题。我在一个名为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);https://stackoverflow.com/questions/29992939
复制相似问题