2

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を参照

では、現在のセットアップを使用して、この対策をどのように達成できますか?

4

1 に答える 1

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-" ヘッダーなど、リバース プロキシによって追加されたヘッダーが含まれているためです。

于 2013-11-29T07:18:38.157 に答える