Node.js 在Nodejs中实现反向代理

Node.js 在Nodejs中实现反向代理,node.js,reverse-proxy,Node.js,Reverse Proxy,我正在尝试使用nodejs创建一个反向代理,在这里我可以映射不同的 指向各种网站的组合 以下是我的第一次尝试代码: var http = require('http'), httpProxy = require('http-proxy'); httpProxy.createServer(function (req, res, proxy) { proxy.proxyRequest(req, res, { host: 'www.yahoo.com', port: 80 }); }).

我正在尝试使用nodejs创建一个反向代理,在这里我可以映射不同的 指向各种网站的组合

以下是我的第一次尝试代码:

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,因此如果这个问题听起来很可笑,我很抱歉。

您的第二次尝试失败,因为
hostnameOnly
规范不接受路由路径中的端口。从:


不过,你的思路是对的。看见如果省略
hostnameOnly
参数,它应该可以正常工作。

第二次尝试失败,因为
hostnameOnly
规范不接受路由路径中的端口。从:


不过,你的思路是对的。看见如果省略
hostnameOnly
参数,它应该可以正常工作。

不完全是一个答案,但这里有一些提示可以帮助您诊断问题。NodeJS将所有依赖项存储在node_模块下。节点_模块下的依赖项只是js文件。节点http代理等依赖项完全用JavaScript编写,因此您可以更改它们。只需转到node_模块下的node http proxy并添加一些console.log()。这应该会有帮助。这不是一个确切的答案,但这里有一些提示可以帮助你诊断问题。NodeJS将所有依赖项存储在node_模块下。节点_模块下的依赖项只是js文件。节点http代理等依赖项完全用JavaScript编写,因此您可以更改它们。只需转到node_模块下的node http proxy并添加一些console.log()。这应该会有帮助。
var options = {
  hostnameOnly: true,
  router: {
    'foo.com': '127.0.0.1:8001',
    'bar.com': '127.0.0.1:8002'
  }
}