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


12

あなたが入力したときにそうすることを、私はそのDNSが11.22.33.44のようなIPアドレスにexample.comなどのアドレスを解決する知っているが、私はサブドメインが解決されるかについて混乱して少しだ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サーバーに実際に渡されるものは何ですか?

回答:


18

ドメイン、サブドメイン、サブサブドメイン、およびサブ(x)-サブサブドメイン(最後の2つを作成!)は、DNSによってエンドユーザーとWebサーバーに対してまったく同じ方法で処理されます。

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

現在、おそらくご存知のように、世界にはIPよりも多くのドメインがあります。

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

実際に何を要求するかは関係なく、マシンはすべてを同じように扱います。接続するIPをDNSで検索し、接続すると、要求の一部としてホストヘッダーを送信します。次に、ウェブサーバーは、返送するように設定されたコンテンツを返送します。

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

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

代替テキスト

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

代替テキスト

ここから画像)

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

このテーマの詳細については、仮想ホスティングに関するウィキペディアの記事をご覧ください。

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

編集

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

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


1
いいね!サイドノート:2つのWebサイトがIPアドレスを共有しているという事実は、必ずしも同じマシンでホストされていることを必ずしも意味しません。実際には、ロードバランサーはこれらのヘッダーを覗き、異なるマシンに委任する場合もあります。(スーパーユーザーなどについては、Stack OverflowのNew York Data Centerも参照してください。私は実際には読みませんでした...)
アルジャン

@Arjan +1の良い点...ロードバランサーに言及しましたが、明らかにロードバランサーのIPである可能性があり、その後、リクエストを多くのサーバーに分割します。
ウィリアムヒルサム

1
詳細な情報と詳細な調査へのリンクの回答としてマークされています。ありがとう!
ジョシュアフランク

6

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

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

3

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

言い換えると、example.comへのリクエストは、sub.example.comへのリクエストと実際には変わりません。


ここで重要なことを理解していないのではないかと思います。質問を編集して明確にしましょう。ありがとう。
ジョシュアフランク

sub.example.com解決しない場合、のIPアドレスexample.comが使用されると言っていますか?ブラウザはそれをしないと思います。(ワイルドカードDNSレコードが存在する場合を除き、サブドメインは実際に解決します。)
Arjan

1

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

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


1
私のブログスポットの例では、「xyz.blogspot.com」には専用のdnsエントリがないため、dnsは「blogspot.com」を探して11.22.33.44で検索します。しかし、ホストフィールドとしてURL「xyz.blogspot.com」全体を送信し、これを解析してxyzページをブラウザに送信するのはサーバー次第ですか?
ジョシュアフランク

はい、そうです。
ジョエルCoehoorn

nslookup dummy.example.comyields server can't find dummy.example.com–それでは上記とどのように一致しますか?(
@Joshua

申し訳ありませんが、サブドメインにはまだAレコードが必要です。必要に応じて同じIPを提供できるというだけです。
ジョエルCoehoorn

その後、私は再び混乱しています。xyz.blogspot.comのサブドメインが数百万ある場合、それらすべてにAレコードを持たせることはできませんが、ルーティングはどのように達成されますか?そして、Aレコード構成はサーバー側です。xyzが適切なサブドメインであるか、サーバー側にマッピングされているものであるかを、URLを指定してクライアントがどのように知るかに興味があります。特に、x.domain.comとy.domain.comが同じサーバー上にあることを知っているか、URLを見るだけでは決してわからないため、しばらくの間IPをキャッシュすることは安全ですか?
ジョシュアフランク
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.