2011-07-09 25 views
0

node.jsに単純なTCPとHTTPプロキシを作成したいとします。たとえば、プロキシはポート8080をリッスンし、すべてのTCPリクエストを127.0.0.1:8181にリダイレクトし、すべてのHTTPリクエストを127.0.0.0.1:8282node.jsのTCP/HTTPプロキシ

私はコードの20行で単純なHTTPプロキシのためにGoogleでこのスニペットを見つけました:だから基本的に私はそれがTCPまたはHTTPかどう推測し、8080で要求の任意の並べ替えをリッスンする必要が

var http = require('http'); 

http.createServer(function(request, response) { 
    var proxy = http.createClient(80, request.headers['host']) 
    var proxy_request = proxy.request(request.method, request.url, request.headers); 
    proxy_request.addListener('response', function (proxy_response) { 
    proxy_response.addListener('data', function(chunk) { 
     response.write(chunk, 'binary'); 
    }); 
    proxy_response.addListener('end', function() { 
     response.end(); 
    }); 
    response.writeHead(proxy_response.statusCode, proxy_response.headers); 
    }); 
    request.addListener('data', function(chunk) { 
    proxy_request.write(chunk, 'binary'); 
    }); 
    request.addListener('end', function() { 
    proxy_request.end(); 
    }); 
}).listen(8080); 

、および要求を正しいパスにプロキシします。上のスニペットを使用して任意のヒント?

おかげ

+0

HTTPは、TCPを介したアプリケーションレベルのトランスポートです。私はあなたが 'このtcpデータが有効なHTTPリクエストを作成するかどうかを確認しようとしています'と言っていると思います –

答えて

4

nodejitsuは、私はあなたの代わりにしようと考えてオープンソースnode-http-proxyを持っています。文書化され、積極的に開発されています。

関連する問題