2016-05-06 2 views
0

誰でもこのコードでオプションのルータが何をしているか説明してください。私はこのコードをブログから手に入れました。私はノードのHTTPプロキシを実装しようとしています。ノードのルータhttpプロキシ

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

 
// 
 
//Leave out the hostnameOnly field this time, or set it to false... 
 
// 
 
var options = { 
 
    router: { 
 
    'domainone.com/appone': '127.0.0.1:9000', 
 
    'domainone.com/apptwo': '127.0.0.1:9001', 
 
    'domaintwo.net/differentapp': '127.0.0.1:9002' 
 
    } 
 
} 
 

 

 
// 
 
//...and then pass in your options like last time. 
 
// 
 
var proxyServer = httpProxy.createServer(options).listen(80); 
 

 
// 
 
// ...and a simple http server to show us our request back. 
 
// 
 
http.createServer(function (req, res) { 
 
    res.writeHead(200, { 'Content-Type': 'text/plain' }); 
 
    res.write('request successfully proxied!' + '\n' + JSON.stringify(req.headers, true, 2)); 
 
    res.end(); 
 
}).listen(9000);

+0

[add-ons](https://github.com/nodejitsu/node-http-proxy#proxytable-api)の代わりに、プロキシテーブルが非推奨になりました。 – robertklep

答えて

0

プロキシライブラリは、すべての着信要求を取り、あなたのルータテーブル内のルールと照合しようとします。一致したと判断した場合は、指定したDNS名に関連付けられているIPアドレスにその要求が転送されます。例えば

domainone.com/apponeに行くが、私はここを参照してください問題は、あなたがポート9000でリッスンし、あなたの最初のされていることである127.0.0.1:9000

一つに転送されます要求ルールは127.0.0.1:9000に再ルーティングされます。

+0

しかし、私はdomainone.com/apponeと入力してください。これはlocalhost:9000のページを表示していません。 – bharadwaj

+0

あなたのブラウザにそれを入力しても、あなたは自動的にlocalhost:9000にリダイレクトされません。 domainone.comをプロキシアプリケーションが動作している任意のIPアドレスに送信するようにローカルホストファイルを編集する必要があります – tier1