在Nodejs中实现反向代理

时间:2012-03-09 15:46:17

标签: node.js reverse-proxy

我正在尝试使用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感兴趣,所以如果这个问题听起来很荒谬我会道歉。

1 个答案:

答案 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参数,它应该可以正常工作。