在Nodejs中实现反向代理

我正在尝试使用nodejs创build一个反向代理,我可以将不同的组合映射到各种网站。

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

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) ; 

这做甚至工作,我不知道为什么。

那么我想创build的是简单的应用程序,我映射到域和获取这些页面。 我仍然得到一个nodejs的挂起,所以我道歉,如果这个问题听起来很荒谬。

您的第二次尝试失败,因为hostnameOnly规范不接受路由path中的端口。 从节点http代理文档 :

 var options = { hostnameOnly: true, router: { 'foo.com': '127.0.0.1:8001', 'bar.com': '127.0.0.1:8002' } } 

尽pipe如此,你仍然处于正确的轨道。 看到这里 。 它应该工作正常,如果你省略hostnameOnly参数。