外部 HTTP トラフィックをネットワーク内の複数のマシンにルーティングする

外部 HTTP トラフィックをネットワーク内の複数のマシンにルーティングする

これは明らかにすべてのウェブファームが行うことなので可能ですが、私はウェブファームではありません。

私は主に Windows に関してかなり優れた技術力を持っていますが、これを実現するためにシンプルな Linux ボックスをセットアップしても問題ありません。

現在、インターネットに接続しているルーターがあり、さまざまなポートで 1 台のマシンにトラフィックを通過させています。これは問題なく動作し、その 1 台のマシンで複数の Web サイトを実行できますが、トラフィックを傍受してドメイン名に基づいて別のマシンに送信できるようにしたいと考えています。

Reporting.example.com => PC1
Demos.example.com => PC2
MySite.example.com => PC1
Three.example.com => PC3
(all domain obviously resolve to my single internet facing IP address).

これを実行するルーターを入手できますか (ポート転送などについては知っていますが、それらはポート上でしか機能しません)。転送機能を備えた中間の Linux/XP ボックスをセットアップできますか。簡単な解決策はありますか。

答え1

これは唯一の方法でも最善の方法でもありませんが、これが私が行う方法です。質問で私が誤解していたら訂正してください。

  1. ルータは WAN IP を保持します。ルータでホスト名と IP のマッピングを指定できる場合は、各ドメインをネットワークの内部 IP にマッピングして追加することができます。

  2. ルーターがこれを実行できない場合は、1 つのシステムにリバース プロキシを設定して、ドメインごとにトラフィックをバックエンド システムに転送できます。これは、フェイルオーバーにも使用できるため便利です。

以下は、リバース プロキシとしての Apache の vhost 構成の例です。

ServerName Demos.example.com
ProxyPreserveHost On
ProxyTimeout 5400
ProxyPass / http://LAN_IP1 max=20 ttl=5000 retry=300
ProxyPassReverse / http://LAN_IP1/

ps 専用のリバース プロキシ サーバーを用意する必要はありません。既存のシステムの 1 つを使用して、1 つのドメインをローカルで処理し、他のドメインをプロキシすることができます。この特定のシステムは、ルーターがすべての Web トラフィックを転送するシステムである必要があります。

答え2

Vangels の解決策はうまく機能しました。他の人のためにここで説明しました。

これはhttp.confファイルに追加する必要があります

<VirtualHost *:80> 
 ServerName Demos.example.com
 ProxyPreserveHost On
 ProxyTimeout 5400
 ProxyPass / http://LAN_IP1 max=20 ttl=5000 retry=300
 ProxyPassReverse / http://LAN_IP1/
</VirtualHost >

以下のモジュールも有効にする必要があります

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

関連情報