単一のIPアドレスの背後にある複数の物理Webサーバーをホストするにはどうすればよいですか?


14

自宅で複数のWebサーバーを実行しており、それぞれがルーターに接続されています。

サーバーAサーバーBサーバーC

IP(xx.xxx.xx.xx)ポート80がサーバーAを指しているため、現在1つのサーバーしか使用できません。ただし、一部のドメインはサーバーAを指し、一部はBを指します。

1つのIPアドレスで、各サーバーをポイントするにはどうすればよいですか?たとえば、私のA(ホスト)レコードはすべて、私のIPアドレスのみを指します。

分かりにくいと思いますが申し訳ありません。はっきりしない場合は教えてください。

各サーバーはUbuntu Server 12.04.02を実行しており、Apacheを使用しています(それが役立つ場合)。私のルーターもNetgearであり、ISPはTime Warner Cableです。



@kobaltzこれらは異なるホストであり、仮想ホストではないため正確ではありません。これらは3台の物理サーバーです
スティーブンCioffi

質問内の私の答えは、ルーターの後に最初にヒットするリバースプロキシサーバーがある場合と同じです。そこから、3つのサーバーのいずれかにデータをプッシュします。OpenWRTのようなものを使用する場合は、ルーター内からこれを行うこともできます。
コバルツ

私は現在、他の質問への回答で説明を使用しています。ゲートウェイ用のVMを備えた仮想マシンサーバーがあり、次に20ノードあります。サブドメインとドメイン名に応じて、20台のサーバーのいずれかにデータをプッシュします。
コバルツ

回答:


9

WebサイトはHost:、ブラウザーから送信されたヘッダーを通じて認識されます。ただし、ルーターは仮想ホスティングで使用されるHTTPデマングルに対応していないため、1つのサーバーを「エンドポイント」として選択する必要があります(そして、ルーターにそのアドレスをVirtual Server / DMZとして指定します)。

次に、1台のマシンをそのドメインのWebサーバーとして、他のマシンのプロキシとして(例えばApacheリバースプロキシを使用して)設定するか、(たぶん)そのマシンにプロキシをインストールし、それを使用して他のサーバーへのリクエストを多重化します。一部のドメインは同じマシンでホストされている場合もあります。nginxこの種の作業には適していますが、他のソフトウェア(例pound)を使用することもできます。

2番目のソリューションの方が優れていると思います。Webサーバーの設定をいじる必要がまったくないからです。1つのプロキシがプロキシを実行し、複数のWebサーバーがWebサービスを実行します。サーバーを追加したり、仮想ホストを移動したりする必要がある場合、このアーキテクチャの保守は簡単です。

                                    +-- virtual hosts 1..9 -- server B
                                    |
router ----- machine A (nginx?) ----+-- virtual hosts 10..23- server C
                                    |
                                    +-- virtual hosts 24..99- server D

要求が2回(プロキシによって1回、目的の受信者によって1 )デコードされるために追加されるレイテンシは無視でき、プロキシ自体によって提供されるアクセラレーションによって相殺されます。


VMゲストをプロキシとして作成する場合、使用するのに最適なOSは何ですか、どのハードウェアリソースを割り当てる必要がありますか?DMZでこのプロキシを設定することについて言及していますが、これは必要ですか?ルーターのファイアウォールとNATを介した保護の層がまだあるように、開きたいポートだけをポートフォワードすることはできませんか?
リース

プロキシのリソースは問題ではなく、ネットワークに大きく依存します。OSに関しては、確かにUnix、LinuxまたはBSDは、あなたが最も使いやすいものに応じて言うでしょう。いくつかの仮想化ソリューション(vmware、virtualbox、xenなど)用の既製のアプライアンスもあります。はい、必要なポートのみを確実にポートフォワードできます。
LSerni
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.