2012-03-09 4 views
2

nodejsを使用してリバースプロキシを作成しようとしています。異なる のombinationsをさまざまなWebサイトを示すようにマッピングできます。私は組み合わせのセット全体を持っている場合も正常に動作しますが、Nodejsでリバースプロキシを実装する

var http = require('http'), 
httpProxy = require('http-proxy'); 
httpProxy.createServer(function (req, res, proxy) { 
    proxy.proxyRequest(req, res, { 
    host: 'www.yahoo.com', 
    port: 80 
}); 
}).listen(8000); 

follwingは私の最初の試みコードです。私はそのようにする方法を知りません。

var http = require('http'), 
httpProxy = require('http-proxy'); 

var mapping = { 
hostnameOnly: true , 
router : { 
'127.0.0.1:8000' : 'www.google.com' , 
'127.0.0.1:8001' : 'www.yahoo.com' 
    } 
} 

var proxyserver = httpProxy.createServer(mapping).listen (80) ; 

これも仕事doest私の第二の試みは、私はなぜ知りません。

私が作成しようとしているのは、ドメイン にマップしてそれらのページを取得する簡単なアプリケーションです。 私はまだnodejのハングを取得しているので、質問がばかげている場合は謝罪します。

+0

正確な回答ではありませんが、問題の診断に役立つヒントがあります。 NodeJSは、すべての依存関係をnode_moduleに格納します。 node_moduleの下の依存関係はjsファイルだけです。 node-http-proxyのような依存関係はJavaScriptで完全に書かれているため、それらを変更することができます。 node_modulesの下にあるnode-http-proxyに行き、いくつかのconsole.log()を追加するだけです。それは助けになるはずです。 –

答えて

0

hostnameOnly仕様ではルーティングパス内のポートを受け入れないため、2度目の試行は失敗します。 node-http-proxy docsから:

var options = { 
    hostnameOnly: true, 
    router: { 
    'foo.com': '127.0.0.1:8001', 
    'bar.com': '127.0.0.1:8002' 
    } 
} 

あなたは正しいトラックにいます。 hereを参照してください。 hostnameOnly引数を省略するとうまくいくはずです。

関連する問題