web-dev-qa-db-ja.com

サーバーがドメインを知る必要があるのはなぜですか?

トラフィックのルーティングに加えて、サーバー名でサーバーを構成する必要があるのはなぜですか?
TLDのルーティングまたはホスティングを除くすべてのケースで無駄のようです。

Nginxの例:

server {
    listen 80;
    server_name myexample.com
    ...
}

サーバー名を設定しないと、ApacheはCould not reliably determine the server's fully qualified domain nameという警告も表示します。

2
Stephen

主な理由は、HTTPリクエストにドメイン名が含まれていることです。 stackoverflow.comとaskubuntu.comをすべて同じフロントエンドマシンから提供できます。サーバーがリクエストを受信すると、送信するコンテンツを知る必要があります。これが、サーバー構成がホスト名について話す主な理由です。

1つのドメインのみにサービスを提供している場合、なぜ設定する必要があるのですか?強い理由はなく、nginxでの実装の決定にすぎません。 Python HttpServerなど、他のWebサーバーはデフォルトですべてのホスト名に応答する場合があります。

2番目の理由は、ホスト名がエラーページで使用される可能性があるため、f1234.googlecloud.comではなくexample.comにすることです。

4
poolie

ごめんなさい。しかし、y'allはポイントを逃しました。私は、私が望んでいたものではなかった前の文をin辱しているのではないかと思いました。だから私はこれを追加しています:あなたの答えが好きです。彼らは正しいです。しかし、ホスト名を持つことに関連して、必ずしもドメイン名を持つとは限らないという歴史的および一般的な情報を見逃していました。これは、私が望んでいるほどではありませんが、私が言おうとしていることです。

サーバーのホスト名を設定し、質問が示すように、Webサーバーの場合、サーバーが受け入れて応答するパケットを最低限知っているだけです。ホスト名は便宜上のものであり、IPアドレスが唯一の重要なネットワーク設定であるという概念を混同しないでください。どういたしまして。パケットヘッダーは、ホスト名、またはインターネットベースの場合はドメイン名でアドレス指定できます。

要求パケットが作成されると、多くの場合、パケットヘッダーに配置されるのはホスト名またはドメイン名です。アドレスとルーティング情報は別のネットワークレイヤーで完全に二次的に決定され、ホスト名またはドメイン名が常にプロキシ経由のヘッダー書き換えを除いて同じままである間、ルート内でも変更できます。

ホスト名を追加するのは簡単なため、重要ではないように思えるかもしれませんが、ネットワーキングとルーティングにとっては非常に重要です。これが、ネットワーク上にブロードキャストがあり、どのホスト名がどのIPアドレスとMACアドレスを持ち、リクエストを適切な場所にルーティングするかを決定する理由です。この場合も、パケットは少なくともホスト名でアドレス指定される可能性があります。これで、ルーターはその要求パケットと、そのパケットが受け入れられて応答されることを知っているコンピューターを指示できます。

繰り返しますが、ホスト名は静的アドレス指定ですが、IPアドレスはネットワークルーティング用語では動的アドレス指定です。 IPアドレスがネットワーク設計の観点から静的に割り当てられている場合でも、それは依然として動的なエンティティです。いつでも変更できます。

私の前提に反論する人もいることは知っていますが、多くの場合、ここにあるように概念が逆になっています。ネットワークルーティング101について話しています。ホスト名はすべてのプロトコルを超えていますが、IPアドレスはそうではありません。これは、使用されているネットワークプロトコルに関係なく、ホスト名が引き続き最も重要なアドレス指定メカニズムであることを意味します。 TCP/IPがパケット作成時にIPアドレス指定を許可するのは、たまたま起こります。そのようなメカニズムが他のプロトコルに存在するかどうかはわかりません。思い出せません。

0
closetnoc