我正在尝试使用nodejs创建一个反向代理,我可以在其中映射不同的代码 ombations指向各种网站。
以下是我的第一次尝试代码:
var http = require('http'),
httpProxy = require('http-proxy');
httpProxy.createServer(function (req, res, proxy) {
proxy.proxyRequest(req, res, {
host: 'www.yahoo.com',
port: 80
});
}).listen(8000);
做得很好,但如果我有一整套组合。我不知道如何去做。
我的第二次尝试
var http = require('http'),
httpProxy = require('http-proxy');
var mapping = {
hostnameOnly: true ,
router : {
'127.0.0.1:8000' : 'www.google.com' ,
'127.0.0.1:8001' : 'www.yahoo.com'
}
}
var proxyserver = httpProxy.createServer(mapping).listen (80) ;
这项工作甚至可以工作,我不知道为什么。
我正在尝试创建的是我映射到域的简单应用程序 并获取这些页面。 我仍然对nodejs感兴趣,所以如果这个问题听起来很荒谬我会道歉。
答案 0 :(得分:0)
您的第二次尝试失败,因为hostnameOnly
规范不接受路由路径中的端口。来自node-http-proxy docs:
var options = {
hostnameOnly: true,
router: {
'foo.com': '127.0.0.1:8001',
'bar.com': '127.0.0.1:8002'
}
}
但你走在正确的轨道上。见here。如果省略hostnameOnly
参数,它应该可以正常工作。