簡體   English   中英

使用node.js http-proxy測量流量

[英]Measuring traffic with node.js http-proxy

我編寫了一個小型反向代理,用於使用http和node-http-proxy模塊將應用程序托管在同一台計算機上。 例如:

我有:

  • 在端口80上運行的代理

  • 在端口3000上運行的website1.com

  • 在端口3001上運行的website2.com

  • 在端口3002上運行的website3.com

如果我訪問website1.com域,則代理將使用node-http-proxy從端口3000上運行的服務器提供內容。

但是現在我需要測量每個域使用的帶寬(傳入/傳出或至少傳出)

我曾嘗試偵聽請求對象上的“數據”事件,但是在文檔中他們說由於某些原因,不會在IncomignMessage上發出可讀事件。

我也為“基本”功能編寫了一個小模塊,可以在這里找到:

https://npmjs.org/package/reproxy

參見example / example.js

那么,如何使用當前設置完成此措施?

我發現的解決方案是在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-”標頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM