繁体   English   中英

使用http-proxy对新端口的代理请求

[英]Proxy request to new port with http-proxy

我使用这个代码我想创建代理,所有应用程序调用端口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时,我仍然收到相同的消息,为什么? 好吗?

  • 我应该在第二个创建服务器中生产什么? 我的意思是代替

     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的“真实”服务器。如果您尝试直接访问它,则没有理由不这样做,并且您的请求事件处理程序(在该服务器上)所做的是返回字符串“请求成功代理到:“+网址。 这里没什么特别的:-)

我应该在第二个创建服务器中生产什么?
res.end()是否也应该存在

你应该放一些真实有用的服务器逻辑。 您没有描述您的服务器的功能,我认为这与您所做的问题无关。 res.end()是否应该存在是服务器的功能。 再说一次,没有什么可看的:-)

如果你想看到一个真实的风景,试着在listen功能中添加一个主机名:

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

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

http://192.12.13.14:3002 

http://192.12.13.14:3000

看到差异

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM