我编写了一个小型反向代理,用于使用http和node-http-proxy模块在同一台计算机上托管我的应用程序。例如:
我有:
代理在端口80上运行
website1.com 在端口3000上运行
website2.com 在端口3001上运行
website3.com 在端口3002上运行
如果我访问 website1.com 域,则代理将使用 node-http-proxy 为端口3000上运行的服务器提供内容。
但现在我需要衡量每个域使用的带宽(传入/传出,或至少传出)
我已尝试在请求对象上侦听“数据”事件,但在文档中他们说由于某种原因, IncomignMessage 上不会发出可读事件。
我也为“基础”功能写了一个小模块,可以在这里找到:
https://npmjs.org/package/reproxy
参见 example / example.js
那么,如何使用当前设置完成此措施?
答案 0 :(得分:0)
我找到的解决方案是在RoutingProxy对象上设置和'结束'事件,并在事件回调中获取套接字信息。
var proxy = new require('http-proxy').RoutingProxy();
proxy.on('end', function(req, res, response) {
var host = req.headers.host;
var bytesIn = response.socket._bytesDispatched;
var bytesOut = response.socket.bytesRead;
console.log('request to ' + host);
console.log('request: ' + bytesIn + ' bytes.');
console.log('response: ' + bytesOut + ' bytes.');
});
请注意,这不是最佳解决方案,因为请求大小包括反向代理添加的标头,例如“x-”标头。