我使用此代码我想创建代理,所有应用程序调用端口3000的所有应用程序将被路由"引擎盖下#34;到港口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()
是否也应该在那里?
答案 0 :(得分:4)
当我将端口(在浏览器中)更改为3002时,我仍然收到相同的消息,为什么?可以吗?
这完全没问题。你建立了一个真正的"服务器侦听端口3002.如果你试图直接访问它,那么没有理由不工作,你的请求事件处理程序(在该服务器上)做的是返回字符串"请求成功代理到:" +网址。这里没什么特别的: - )
我应该在第二个创建服务器中投入什么? res.end()是否也应该在那里
你应该放一些真实有用的服务器逻辑。您没有描述您的服务器的功能,我也不认为它与您所做的问题相关。 res.end()
是否应该存在是服务器的功能。再说一遍,这里没有什么可看的: - )
答案 1 :(得分:1)
如果你想看到一个真实的风景,试着在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
看到差异