web-dev-qa-db-ja.com

1つのIPアドレスに複数のサーバーを設定する方法

1つのIPアドレスに複数のサーバー(さまざまな処理を実行する)を設定する方法を理解できません。サブドメインが異なるアプリケーションを指すようにしたい。私がやろうとしていることの例を挙げましょう。この例では、いくつかのサービスを選択します。また、このプロジェクトで使用しているRaspberry Piをいくつか使用しています。

「mydomain.com」で自分のWebサイトを実行するWebサーバーがあるとします。しかし、同じIPアドレスのMinecraftサーバーを「mc.mydomain.com」の別のサーバーで実行したいと思っています。次に、「cloud.mydomain.com」にある別のサーバーで ownCloud サーバーを実行したいと思います

このプロジェクトでは、Raspberry Piを使用しており、私のドメインはNamecheapに登録されています。

3
monarch8

これは小規模なオフィス/ホームのセットアップだと思います。

同じIPを複数のデバイスに割り当てる方法はありません。したがって、同じデバイスですべてをホストするか、対応するサーバーにパケットを配信するのに役立つメカニズムを使用する必要があります。ここで調べる必要があるのはports[〜#〜] nat [〜#〜]および リバースプロキシ

使用可能なIPアドレスが1つしかない場合は、次のいずれかを行う必要があります。

  • パブリックIPを単一のデバイスに構成し、ローカルネットワーク内でリクエストを分散します
  • すべてのサービスを同じハードウェア(ラズベリーなど)でホストします。

ポート転送の例:

  • cloud.mydomain.comはIPを指します。ここでは、ポート443(https)でWebサーバーを実行します。
  • mc.mydomain.comはIPを指します。ここでは、選択したポートでMinecraftサーバーを実行します。 25565。
  • パブリックIPで受信するすべてのものを転送するようにファイアウォール/ルーターを構成します。
    • ... ownCloudインスタンスをホストしているラズベリーへのポート443で。
    • ...ポート25565で、Minecraftサーバーをホストしているラズベリーに接続します。
  • これらは、ローカルネットワーク上の異なるデバイスにすることができます。ポート転送またはNATルールを設定するだけです。

プロキシを使用した例:

  • 単一のIPのみを持つ複数のWebサーバーを実行したい。 Webサイトごとに異なるポートを使用したくない。
  • 単一のIPを指すようにサブドメインを構成します。
  • ポート443の着信トラフィックをラズベリーの1つに転送するように、ポート転送/ NATルールを設定します。
  • 他の2つのラズベリーにWebサーバーをセットアップし、それぞれがサブドメインの1つのトラフィックを処理します。
  • 最初のラズベリーで、リバースプロキシを設定します。 Nginxを使用しています。サブドメインにさまざまな構成を設定します。1つはsub1.mydomain.com、1つはsub2.mydomain.comproxy_passディレクティブは、ローカルネットワーク内の他のWebサーバーを指します。
  • Nginxプロキシが受信トラフィックを処理し、ユーザーが要求しているサブドメインに基づいて、適切なWebサーバーにトラフィックを分散します。
7
Patrick R.