1

コンピューター A が HTTP 要求をサーバー B に送信し、B が C に応答を求めているとします。B の介入なしに、また A からの特定のアクションなしに (3xx リダイレクトのように)、C が A に応答を返すことは可能ですか? C がパブリック IP アドレスを持っていない可能性があるとします。

4

1 に答える 1

1

それは何をするreverse proxyでしょう。使用しているプラ​​ットフォームに応じて、多くのオプションがあります。

多くのプラットフォームで機能する 1 つの方法は、たとえばnode-http-proxy、サーバー B で開始することです。最も単純なケースでは、このワンライナーで次のようになります。

require('http-proxy').createServer(81, 'serverb').listen(80);

ポート 80 でリッスンし、serverb のポート 81 にリダイレクトします。

その他のオプションについては、 https://github.com/nodejitsu/node-http-proxyを参照してください。

もちろん、より多くの機能を備えた確立されたプロキシが多数あります (ただし、node-http-proxy は https トンネリングなども実行できます)。それはすべて、ユースケースによって異なります。

編集:コメントを読んで、これは直接ルーティングを使用して行うことができます。あなたの質問は HTTP (レイヤー 7) に関するもので、ダイレクト ルーティングは下位レイヤーで機能するため、HTTP などの上位レベルのプロトコルも同様に機能します。http://horms.net/projects/has/html/node9.htmlからの引用:

ダイレクト ルーティング: クライアントからのパケットは、バックエンド サーバーに直接転送されます。IP パケットは変更されないため、仮想サーバーの IP アドレスのトラフィックを受け入れるようにバックエンド サーバーを構成する必要があります。これは、ダミー インターフェイスまたはパケット フィルタリングを使用して、仮想サーバーの IP アドレス宛てのトラフィックをローカル ポートにリダイレクトすることで実行できます。バックエンド サーバーは、応答をクライアントに直接送信する場合があります。つまり、ホスト ベースのレイヤ 4 スイッチが使用されている場合、リターン パスにない可能性があります。

于 2012-10-19T05:15:01.773 に答える