> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
私はタイプ93.184.216.34
の代わりに、http://example.com
Chromeで。Webサイトは読み込まれません。どうして?
> host example.com
example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
私はタイプ93.184.216.34
の代わりに、http://example.com
Chromeで。Webサイトは読み込まれません。どうして?
回答:
Host
目的のサイトを実際に取得するには、多くの場合、適切なHTTP ヘッダーが必要です。
同じIPアドレスで複数のWebサイトをホストHost
し、クライアントによって指定されたHTTP ヘッダー(およびHTTPSの場合は現在のTLS SNI値)に基づいてそれらを区別することは非常に一般的です。
つまりhttp://example.com
、ブラウザに入力したときのHost
ヘッダーはでしたがexample.com
、を入力し93.184.216.34
たときはそうではありません。どちらの場合も同じWebサーバーにアクセスしますが、異なる応答を受信します(この特定の場合では200対404)。
Host
がそれを何のために使用し、どのWebサーバーが一般的にそれを使用するのかを少し拡大できますか?オンラインで検索するのはちょっと難しいです。というのは、その言葉は非常に過負荷だからです。
curl -H "Host: example.com" http://93.184.216.34/
そのようなこともできます。
example.com example.net example.org example.edu
同じアドレスを処理するため、実際にはHostヘッダーに名前が必要です。
通常、Webサーバーは「仮想サーバー」テクノロジーを使用し、WebサーバーのIPアドレスではなく、リクエストしたドメイン名内でHTTPリクエストに応答できるためです。1つのIPアドレスに複数のドメイン名を隠してくれてありがとう。
たとえば、Apache Webサーバーは、次のセクションを使用してIPアドレスでHTTPリクエストに応答できます。
<VirtualHost *:80>
ServerName Default
...
</VirtualHost>
または、設定でVirtualHostがまったく使用されていない場合。
ApacheのVirtualHost機能は1996年に導入されました。
ではApacheの、あなただけの1つのIPアドレスを使用して多くのウェブサイトをホストすることができます。これは仮想ホスティングと呼ばれます。スタンドアロンドメインであっても、サブドメインを作成する方法です。これは、各ドメイン/サブドメインのVirtualHostディレクティブを含むApache構成ファイルを設定することにより行われます。
example1.comとexample2.comの2つの仮想ホストを持つHTTPサーバーの例は、次のようになります(IPアドレス定義)。
<VirtualHost 93.184.216.34:80>
ServerName example1.com
ServerAlias www.example1.com
DocumentRoot /var/www/example1.com
</VirtualHost>
<VirtualHost 93.184.216.34:80>
ServerName example2.com
ServerAlias www.example2.com
DocumentRoot /var/www/example2.com
</VirtualHost>
次のようにもなります(名前ベースの定義):
<VirtualHost *:80>
ServerName example1.com
ServerAlias www.example1.com
DocumentRoot /var/www/example1.com
</VirtualHost>
<VirtualHost *:80>
ServerName example2.com
ServerAlias www.example2.com
DocumentRoot /var/www/example2.com
</VirtualHost>
どちらの場合も、2つの仮想ホストレコードがメモリ内で内部的に作成され、Apacheによって使用されてURIリクエストの到着時と比較されます。
ユーザーがユーザーエージェントを介してIPアドレスを入力すると、構成ファイルにリストされている最初の仮想ホストがプライマリドメインとして使用されます(この場合、example1.com)。
ユーザーがドメイン名を入力すると、要求はそれに関連付けられたIPアドレスを提供するパブリックインターネットDNSネットワーク(ICANN)に送信されます。ICANNレジストラ(GoDaddyなど)を介して両方を登録しました。これらの両方を正しく設定し、ICANNネットワーク上のすべてのDNSサーバーに伝播が適用されるまでしばらく時間が必要です。最近では、最大24時間かかる場合があります。
要求がApache HTTPサーバーにルーティングされると、IPアドレスとドメイン名が内部VirtualHostレコードのリストと照合されます。見つかった場合、ドキュメントルートを使用してオブジェクトリソースへの完全なファイルシステムパスを形成し、ユーザーエージェントに戻ります。そうでない場合は、HTTP 404がそれに関連付けられたエラードキュメントとともに送信されます。
「家」という用語を使用するのが好きです。
名前のない家に手紙を送ると、家に届きます。
その人の名前をその上に置くと、あなたは目的の受信者に送信していることになります。
目的地は同じですが、家に到着したときの処理方法は異なります。
サイト、つまりwww.example.comを指定すると、サーバーはリクエストの処理方法、どのホストを対象としているか、どのサイトを返送するかを認識します。
検索する重要な用語は「名前ベースの仮想ホスティング」です。
同じWebサーバーに複数のホスト名を割り当て、ホスト名ごとに異なるコンテンツを提供したいと考えています。これは、仮想ホスティングと呼ばれます(最近の仮想マシンの概念と混同しないでください)。
当初、仮想ホスティングは複数のIPアドレスをサーバーに割り当てることで行われ、サーバーは使用されたIPアドレスに基づいて異なるコンテンツを送信できましたが、これは無駄であると考えられていました。
そのため、最初は拡張機能として「ホスト」ヘッダーが導入されましたが、その後1997年にhttp 1.1仕様の必須部分になりました。このヘッダーは、クライアントが要求したホスト名を指定します。サーバーは、ヘッダーの値に基づいて異なるコンテンツを提供できます。
Webサーバーのコストを抑えるために、多くのWebサーバーが複数のWebサイトをホストしています。これは、apache2 / nginx / etcにある仮想ホストまたは仮想ホストを使用して行われます。したがって、WebサイトのIPアドレスに直接アクセスすると、「Apache is working」画面が表示されるか、WebサーバーのメインWebサイトにリダイレクトされる可能性が高くなります。
Vhostは着信Webサイトのアドレスを確認し、有効なVhostsファイル内のServerNameまたはServerAlias名と比較します。それらのいずれかが一致すると、その特定のWebサイトがロードされます。
Webサイトの負荷が大きい(ユニークビジター/ページビューの数が多い)場合や、負荷の高いアプリケーション(youtube.com、facebookなど)を駆動している場合を除き、おそらく共有サーバーで運用する方が費用効率が高くなります。WordpressのブログWebサイトを運営するためだけに専用サーバー(1か月あたり60ドルから開始)を入手するのはお金の無駄です。1つのサーバー上におそらく200以上のWebサイトがあるサーバー上で共有プラットフォームを取得した方がよいでしょう。コストは、1か月あたり5ドル程度になります。
これを行うもう1つの理由は、IPアドレスの不足です。単に十分なIPv4アドレスが残っていないだけです。ホーム/ビジネスネットワークでNATを使用し、Vhostを使用することによってのみ、残りがあります。IPv6がメインストリームになった場合でも、サーバーはおそらく仮想ホストに固執します(サーバーコスト)。
専用IPアドレスは高価ですが、サーバー上に新しいWebサイトを作成することは基本的に無料です。
何が起こるかは、ホスティング会社が物理サーバーを指す単一のIPアドレスをレンタルし、「仮想ホスト」機能を使用してそのIPアドレスで数千のWebサイトをホストすることです。
私書箱のように考えてください。郵便局の住所を書き留めるだけで、ボックス番号がなければ、メールは配信されません。
技術的な詳細については多くの回答がありますが、最も簡単な高レベルの説明は、WebサーバーがそのIPアドレスでHTTPトラフィックを適切にリッスンしている場合でも、通常、特定のドメインに応答するようにサーバーを構成する必要があると思います名前、およびその名前はクライアント(つまり、Webブラウザー)によって送信された要求に含まれている必要があります
ほとんどの場合この方法で行われるため、「通常」と言いますが、実際には、IPアドレスのみを使用する場合に応答するようにhttpサーバーをセットアップできる方法があります。
仮想IPと専用IPの違いを理解する必要があります。
Webサイトに専用(共有ではない)IPがある場合、(たとえば)http://123.456.789.012がWebサイトを表示します。
これを試してみてください。これは、私が所有しているサイトの専用IPアドレス、www.negativeiongenerators.com:http : //75.126.128.174 しかし、他の人が言っているように、通常は良い考えではありません。