繁体   English   中英

如何使用http-proxy隐藏node.js服务器

[英]How to hide a node.js server using http-proxy

我正在使用以下代码在node.js上实现反向代理。 它工作正常,但问题是,当我尝试访问服务器127.0.0.1:9008/时,它是完全可访问的。我希望仅通过代理服务器才能访问它。请帮助。

var http = require('http'),
httpProxy = require('http-proxy');

//
// Create a proxy server with latency
//
var proxy = httpProxy.createProxyServer();

//
// Create your server that make an operation that take a while
// and then proxy de request
//
http.createServer(function (req, res) {
// This simulate an operation that take 500ms in execute
setTimeout(function () {
 proxy.web(req, res, {
  target: 'http://127.0.0.1:9008'
});
 }, 500);
}).listen(8008);

//
// Create your 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(9008);

}).listen(9008, "127.0.0.1");

这将使您的目标服务器侦听回送IP地址,而其他计算机无法访问该IP地址。 这是代理后面的服务的标准做法。

通过将最后一行更改为上面的内容绑定到127.0.0.1时,您就可以实现您的目标。 不可能超出此范围。 您始终可以在目标服务器的端口上连接到目标服务器,但是只有从同一台机器进行连接时才可以。 这就是回送的意思。 如果您尝试进一步限制,则甚至代理服务器本身也将无法连接,这对于系统完全起作用是必不可少的。

如果要编写Web服务器和代理,请阅读一些基本的网络教程,并了解不可路由的回送IP地址。 然后,这将更有意义,但是自从您发表评论以来,我无意解释为什么这超出了上面的段落。

暂无
暂无

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

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