使用http-proxy向新端口发送代理请求

我使用这个代码我想要创build代理,所有的应用程序调用到端口3000将被路由到“端口”3002端口

var http = require('http'), httpProxy = require('http-proxy'); var proxy = httpProxy.createProxyServer(); http.createServer(function (req, res) { proxy.web(req, res, { target: 'http://localhost:3002' }); }).listen(3000); // Create target server http.createServer(function (req, res) { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2)); res.end(); }).listen(3002); 

现在,当我运行与原始端口(3000)的应用程序,我在浏览器中看到

请求成功代理到3002

  • 当我将端口(在浏览器中)更改为3002时,我仍然收到相同的消息,为什么? 可以吗?

  • 我应该在第二台创build服务器中投入什么? 我的意思是,而不是

     res.writeHead(200, { 'Content-Type': 'text/plain' }); res.write('request successfully proxied to: ' + req.url + '\n' + JSON.stringify(req.headers, true, 2)); res.end(); 
  • res.end()是否也应该在那里?

我使用https://github.com/nodejitsu/node-http-proxy中的代码

当我将端口(在浏览器中)更改为3002时,我仍然收到相同的消息,为什么? 可以吗?

这很好。 你设置了一个监听3002端口的“真实”服务器。如果你试图直接访问它,没有理由不工作,你的请求事件处理器(在那​​个服务器上)做的是返回string“request successfully proxied to :“+的url。 没什么特别的在这里看到:-)

我应该在第二台创build服务器中投入什么?
res.end()也应该在那里

你应该把一些真正有用的服务器逻辑。 你没有描述你的服务器做什么,我不认为它与你所做的问题有关。 res.end()是否应该在那里是服务器的function。 所以再次,没有看到这里:-)

如果你想看到一个接近真实的风景尝试添加一个主机名在听function:

 }).listen(3002,'127.0.0.1'); 

然后尝试从其他计算机(或使用同一台计算机,但使用您的networkingIP)连接。 如果你的networkingIP是192.12.13.14试试:

 http://192.12.13.14:3002 

 http://192.12.13.14:3000 

看到差异