質問はかなり簡単です。Node.jsサーバーをプロキシとして使用して、HTTPクエリをログに記録し、認証して、バックエンドHTTPサーバー(PUT、GET、およびDELETE要求)に転送したいと思います。
その目的のためにどのライブラリを使用する必要がありますか?見つからないのではないかと思います。
回答:
NodeJSは標準モジュールとしてhttp.requestをサポートしています:http://nodejs.org/docs/v0.4.11/api/http.html#http.request
var http = require('http');
var options = {
host: 'example.com',
port: 80,
path: '/foo.html'
};
http.get(options, function(resp){
resp.on('data', function(chunk){
//do something with chunk
});
}).on("error", function(e){
console.log("Got error: " + e.message);
});
request
npmモジュールをもっとたくさん使い始めました。
組み込みhttp
モジュールを使用してを実行できhttp.request()
ます。
ただし、APIを簡素化したい場合は、スーパーエージェントなどのモジュールを使用できます。
上記の@hrossによって提案されたように、node-http-proxyは優れたソリューションです。ノードの使用に行き詰まっていない場合は、NGINXを使用して同じことを行います。それはノードで本当にうまく機能します。たとえば、SSLリクエストをノードに転送する前に処理するために使用します。また、キャッシュおよび転送ルートを処理することもできます。わーい!
これを行うには、node.jshttpモジュールを使用できます。Node.jsHTTPでドキュメントを確認できます。
クエリ文字列も他のHTTPサーバーに渡す必要があります。ServerRequest.urlにそれがあるはずです。
これらの情報を入手したら、バックエンドHTTPサーバーとポートを、で提供するオプションに渡すことができます。 http.request()
resp.setEncoding('utf8');
データをutf8文字列として取得するには、追加(または使用しているエンコーディング)をお勧めします。私が正しく理解していれば、それ以外の場合はBufferオブジェクトを取得し、マルチバイト文字が2つのチャンクに分割されているとマルチバイト文字で問題が発生する可能性があります。(しばらくの間、関連する問題をデバッグしました)