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

我正在使用以下代码在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地址,这是从其他机器无法访问的。 这是代理服务背后的标准做法。

当你通过改变你的最后一行到上面的内容来绑定到127.0.0.1时,你正在实现你的目标。 超出这个限制是不可能的。 您将始终能够连接到您的目标服务器的端口,但只有当连接到同一台机器。 这是什么回送手段。 如果您试图进一步限制,即使代理本身也无法连接,这是系统根本不可或缺的function。

如果您要编写Web服务器和代理,请阅读一些基本的networking教程,并了解不可路由的回送IP地址。 那么这样做会更有意义,但是没有,因为你评论我无意解释为什么超出上述段落。