web-dev-qa-db-ja.com

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

家で複数のWebサーバーを実行しています。各サーバーはルーターに接続されています。

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

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

1つのIPアドレスで、各サーバーをどのようにポイントしますか?たとえば、my A(Host)と入力すると、すべてが自分のIPアドレスのみをポイントします。

混乱するようでしたら申し訳ありません。はっきりしない場合はお知らせください。

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

14
Stephen Cioffi

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

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

Webサーバーの構成をいじる必要がないため、2番目のソリューションの方が良いと思います。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

デコードされるリクエストによる追加のレイテンシtwice(プロキシによって1回、目的の受信者によって1回)は無視でき、プロキシ自体によって提供されるアクセラレーションによって相殺される以上です。

9
LSerni