私が理解したように、ブラウザを使用してWebサイトからURLを要求するときに、オペレーティングシステムが指すDNSサーバーがサーバーのDNS名に関連付けられているIPアドレスを知っていることを確認し、DNSサーバーが要求したサーバーを探すかどうかを尋ねます。 、ブラウザがWebサーバーからURLを要求できるようにipを返します。
この時点で、ブラウザがDNS名ではなくサーバーのIPアドレスを使用してURLを要求していることを考えると、Webサーバー(Apache2)はDNS名に関連する正しいVirtualHostを返す方法をどのように知ることができますか?
私の頭では、これはブラウザのヘッダーに関連していると言っていますが、それについて完全にはわかりません。
メモ:これは関連ソリューション
答え1
HTTPリクエストにはリクエストパスだけでなく、多くのヘッダがあります。これらのヘッダーの1つ(Host:
ヘッダー)はリクエストのホスト名です(unix.SEの場合は「unix.stackexchange.com」)。 Apacheはこれを確認し、要求を適切に処理します。
Host:
注:HTTPSはヘッダーが暗号化されているため、IPごとに1つの証明書に制限されています。サーバーがそのヘッダーを取得するまでどの証明書を送信するかはわかりませんが、要求(証明書が必要です)を受け取るまでヘッダーを取得できません。この問題は、Host
初期ハンドシェイクにヘッダーなどを追加するサーバー名表示拡張機能を使用してTLSで解決されます。
答え2
HTTP仮想ホストはHTTPサーバーを独自の「プロキシサーバー」として使用し、ブラウザはターゲット仮想ホストを識別するホストヘッダーを送信します。