1つのIPアドレスと多くのWebサイトをどのように持っていますか?


27

インターネット上にあるIPアドレスは1つですが、多くのWeb名がある場合はどうすればよいですか?たとえば、ホスティング会社が共有IPを持っているが、無制限のドメイン名を(そのボックスの他の全員と一緒に)取得した場合。

インターネット上にボックスがありますが、誰かが別のwwwを入力すると、別のWebサイトを保持する別のマシンをポイントします...(ちょうど別のボックスでその隣に座っています)それはすべてサブドメイン化ですか?ありがとうございました。

私はホスティング会社です

回答:


36

HTTP 1.1プロトコルの一部です。

具体的には、HTTP 1.1プロトコルには、「host:」というヘッダーが含まれています。これは、クライアントがアクセスしようとしている特定のサーバー上のWebサイトを指定します。

したがって、snoopy.netとwoodstock.orgの両方が192.0.32.10を共有し、ブラウザがhttp://snoopy.net/doghouse 特定のhttpリクエストからコンテンツを取得しようとしている場合は次のようになります。

GET /doghouse HTTP/1.1
Host: snoopy.net

目的のURLがhttp://woodstock.org/seedsリクエストの場合、次のようになります

GET /seeds HTTP/1.1
Host: woodstock.org

どちらの場合も、コンピューターとサーバーのポート80の間にtcpソケットがあります。サーバーは、Hostヘッダーに基づいて/var/www/snoopy.netまたは/var/www/woodstock.org/からコンテンツを取得することを知っています。

Cookieやブラウザの種類や許可されたコンテンツなどの他のヘッダーがありますが、「ホスト」ヘッダーにより、Webサーバーはどの仮想Webサイトが望ましいかを知ることができます。

RFC2616には他にもあります。

これは、httpsサイトが独自のIPアドレスを持たなければならない理由でもあります。httpトランザクションの前にSSL鍵交換と証明書検証が行われるため、httpサーバーは「woodstock。 org」または「snoopy.net」が192.0.32.10のポート443でhttps接続を受信した場合。


編集する

**コメントでGrawityは、サーバがアクセスしようとしているウェブサイトのユーザーを知ることができTLS仕様でのSSLの拡張機能があることを指摘し、そのため、最新のWebブラウザでは、これらの拡張機能を持っていることを必須が少しもあります強い。


ウェブサーバーはそのヘッダーを見て正しいウェブサイトに移動しますか?そのような同じポートに複数のWebサイトを配置できますか?
ジョニー

1
それがまさにそのためです。apacheなどの1つの「サーバー」には、多くのDNSエントリがあり、それぞれが「サイト」である192.0.32.10のポート80があります。サーバーは、「ホスト」ヘッダーに基づいて、目的のサイトが何であるかを認識しています。
クリス

3
DNSは、両方の名前がサーバーがリッスンしている同じIPアドレスを指すように構成されます。サーバーは同じIPとポートで接続を受信しますが、ブラウザーが「SiteA.comが欲しい」と言うと、SiteB.comを要求したときとは異なるコンテンツを提供する必要があることを認識します。
マッシモ

2
さらに明確にするために、2つのサイトはTCP / IPレベルではなく、HTTPプロトコルレベルで区別されます。誰かがあなたのオフィスに電話して、ジョンまたはスーザンと話すように頼むときのようです。電話番号は同じですが、複数の人がそれを使用できます。
マッシモ

1
ほとんどのWebブラウザとサーバーは、TLSサーバー名表示をサポートするようになりました。これにより、Webサイトごとに1つのIPアドレスの要件がなくなります。
-grawity

12

「Host:」ヘッダーと呼ばれる、すべての最新のブラウザーがリクエストとともに送信するものがあります。

このページに対してfirefoxが送信する実際のリクエストは次のとおりです。

ホスト:superuser.com
ユーザーエージェント:Mozilla / 5.0(Windows; U; Windows NT 6.0; en-US; rv:1.9.1.7)Gecko / 20091221 Firefox / 3.5.7(.NET CLR 3.5.30729)
受け入れる:text / html、application / xhtml + xml、application / xml; q = 0.9、* / *; q = 0.8
Accept-Language:en-us、en; q = 0.5
Accept-Encoding:gzip、deflate
Accept-Charset:ISO-8859-1、utf-8; q = 0.7、*; q = 0.7
キープアライブ:300
接続:キープアライブ

ご覧のとおり、

ホスト:superuser.com
ビットは問題のウェブサイトを識別します。

IISおよびApacheでは、特定のIP /ホストの組み合わせからの要求のみを受け入れる仮想Webサイトを構成できます。

特定の問題に関しては、特定のホスティング会社がどのように構成を要求するかについて調べる必要があります。


これは、IPアドレスに複数のDNSエントリを設定する必要があることにも言及する必要があります。
タデウシュA.カドウボウスキ

@Tadeusz:ワイルドカードDNSエントリを設定することは可能ですので、これは厳密には必要ありません。
ジョンギーツェン

6

単一のIPアドレス/ホストで複数のドメイン/サブドメインをホストする技術は、仮想ホストと呼ばれます。http getリクエストには、Webサーバーがリクエストを特定の仮想ドメインと照合できるようにするリクエストのドメイン名が含まれています。

内部に複数の物理ホストがあり、外部IPが1つだけの場合は、要求を正しいマシン/内部IPアドレスに転送するリバースプロキシの設定を検討する必要があります。


もちろん、別のポートで他のhttpサーバーを使用することもできます。
チョッパー3

はい、これもオプションです。しかし、人々はURLを入力するときにポートを指定することに慣れていないので、管理インターフェイスなどのいくつかの状況にそのソリューションを予約します。
3dinfluence

3

ウェブサーバー上の機能は、通常「仮想ホスト」と呼ばれます。dnsエントリをポイントしてそのIPアドレスをポイントすると(他の回答で述べたように)、サーバーは要求されたホストが何であるかに応じて異なるサイトをサーバーします。

別のボックスを指す限りです。最初にクエリを取得する予定の場合は、ほとんどのWebサーバーでリダイレクトを構成できます。サブドメインについて話している場合は、各サブドメインを異なるIPアドレスにポイントするだけです。

すなわち、host.com-> IP 1、次にwww.host.com-> IP 2およびmail.host.com-> IP 3

より具体的な回答が必要な場合は、実行しているオペレーティングシステム上のWebサーバーソフトウェアを指定する必要があります。

この質問には、ServeFaultの方が適している場合があります。


1

要するに...

1-さまざまなドメインのDNSエントリを、すべてボックスを指すように設定します。

2-他の人が説明したように、要求されたホスト名に一致するようにWebサーバーをセットアップします(どちらを言うかは言いません)。

そのようにして、すべてのドメインに対するすべての要求が同じマシンに送られ、その構成が要求されたドメインを取得し、そのサイトのコンテンツを含む適切なフォルダーにルーティングします。


0

2番目のWebサイト用に個別の物理サーバーを持っているように思われます。その場合、2つのサーバーに単一のIPアドレスを使用することはできません。a)2番目のホストの2番目のパブリックIPアドレスを取得するか、b)ホストヘッダーに基づいてリクエストを内部ネットワーク上の別のサーバーに転送するスマートプロキシを設定できます。b)が可能だと確信していますが、それがどのように機能するかについての本当の考えはないので、他の誰かにそれがあなたがやろうとしていることかどうか尋ねる必要があります。


0

あなたの質問を正しく読んでいる場合、NAT(Network Address Translation)を介してIPアドレスを共有している2つの異なるコンピューターがありますか?その場合、1つのサイトが別のポート(80以外)でリッスンする必要があります。HTTPの「ホスト」メタデータに基づいて、ルーターが別のコンピューターにリクエストを送信する方法はありません。2番目のサーバーの2番目のIPアドレスを取得する方が良いでしょう。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.