web-dev-qa-db-ja.com

サブドメインはどのようにWebサーバーに渡されますか?

Dnsがexample.comのようなアドレスを11.22.33.44のようなIPアドレスに解決することは知っていますが、サブドメインがどのように解決されるかについて少し混乱しているので、 http://subdomain.example。 com 、11.22.33.44で実際にサーバーに渡されるものは何ですか?つまり、example.com = 11.22.33.44ですが、subdomain.example.com/path = ???

「サブドメイン」と「パス」はhttpヘッダーとして渡されますか、それとも何らかの方法でURLにマッピングされますか?

前もって感謝します。

編集:私が正しく理解している場合、BloodPhiliaは、subdomain.example.comは実際には別のドメインであり、原則としてまったく異なるIPに解決できると述べています。しかし、そうだとすれば、膨大な数の(どのように見える)サブドメインを持っているが、実際にはサイト上のあるパスにマップされているホストについてはどうでしょうか。たとえば、blogspotは何百万ものブログをホストしており、それらはすべて次のようになります。

aaa.blogspot.com
bbb.blogspot.com
...millions more...
yyy.blogspot.com
zzz.blogspot.com

これらは明らかに独自のIPを持つサブドメインではなく、aaa.blogspot.com-> www.blogspot.com/aaaのようなマッピングですが、これはどのように実現されますか? blogspot.comのWebサーバーに実際に渡されるものは何ですか?

12
Joshua Frank

ドメイン、サブドメイン、サブサブドメイン、およびサブ(x)-サブサブドメイン(最後の2つになりました!)は、DNSによってエンドユーザーとWebサーバーに対してまったく同じように扱われます。

たとえば、DNSサーバーは、domain.comwww.domain.com、またはmysite.domain.comに対して異なる結果を返すことができます。

ご存知かもしれませんが、世界にはIPよりもはるかに多くのドメインがあります。

このため、サーバーは正しいコンテンツを提供するために「ホストヘッダー」と呼ばれるものを使用します。

実際に何を要求するかは関係ありません。マシンはすべてを同じように扱います。DNSで接続するIPを検索し、接続すると、要求の一部としてHostヘッダーを送信します。次に、Webサーバーは、返送するように構成されたコンテンツを返送します。

テスト/学習/診断に適したツールはWfetchで、 ここからダウンロード にすることができます。

これは、superuser.comへのアクセス中に送信されるヘッダーの例です。

alt text

IIS(Webサーバー)のホストヘッダーの構成は次のとおりです。

alt text

ここ からの画像)

興味があれば、Serverfault.comとSuperuser.comは同じIP上にあり、これはサイトを分離して異なるコンテンツを提供するために使用される手法です。

このテーマの詳細については、 仮想ホスティングに関するウィキペディアの記事を読んでください をお勧めします。

(あなたが基本を理解していることは知っていますが、グーグルでこれをやっている人が望むなら少し学ぶことができるように、もう少し言うのが良いと思いました!)

編集

したがって、あなたの例によると、blogspotと同じくらい大きな誰かが、ロードバランサーを指すワイルドカードDNSエントリ(ワイルドカードエントリはすべてのクエリに対して同じ結果を返す)を持っている可能性が高いと思います。ロードバランサーはそれを送信しますおそらくホストヘッダーごとに個別のサイトを持たず、代わりにアドレスが入力された単一のサイト/スクリプト(ホストヘッダーかどうか)が解析され、CDNから正しいコンテンツをプルする多くの異なるWebサーバーに送信されます。

IPごとに数千のエントリがある可能性もありますが(可能性は低いですが)、IPは少数のサーバーにつながり、一致するHostヘッダーを持つ各サイトのエントリがあるだけです。

18
William Hilsum

実際、2つのドメインが同じIPアドレスを持っている場合、サーバーは要求されたドメインを指定するためにブラウザーに依存します。 いいね

GET / HTTP/1.1
Host: data.stackexchange.com
6
Arjan

サブドメインは正しい言葉ではありません。通常、サブドメインはそれ自体がドメインであるため、sub.example.comが最初にDNSに渡されます。このサブドメインの特定のレコードが見つからない場合、リクエストはトップドメインのIPに渡されます。 (example.com)そのサーバーでリクエストが再度行われ、サーバーはそれに応じて動作します。

つまり、example.comへのリクエストは、sub.example.comへのリクエストと実際には違いはありません。

3
BloodPhilia

Subdomain.example.comは11.22.33.44に解決されません-あなたの質問の目的のために、それは通常それ自身のDNS Aレコードを持っており、別のアドレスに解決されます。

サブドメインを親ドメインと同じアドレスに解決し、別のページにサーバーを配置することを許可することは可能ですが、そうする場合は、同じWebサーバーで両方のサイトをホストし、サーバーの構成でアカウントを作成する必要があります。これを説明する方法は、実行しているWebサーバーの種類によって異なります。

1
Joel Coehoorn