対応するドメイン名の代わりにIPアドレスを入力すると、Webサイトが表示されないのはなぜですか?[閉まっている]


38
> 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.comChromeで。Webサイトは読み込まれません。どうして?


経験則として、実際のサーバーを構成しない限り、人間は決してIPアドレスを使用しないでください。
デビッドリチャービー

価値はあなたがいることを強調しました 404 HTTPレスポンス:サーバーからの応答を取得します。つまり、ホスト(反対側のコンピューター)と、そのホストで実行されているWebサーバー(Linux上で実行されているNginxなどのオープンソースと思われるもの)が正常にデータを送り返したことを意味します。
jpmc26

回答:


107

Host目的のサイトを実際に取得するには、多くの場合、適切なHTTP ヘッダーが必要です。

同じIPアドレスで複数のWebサイトをホストHostし、クライアントによって指定されたHTTP ヘッダー(およびHTTPSの場合は現在のTLS SNI値)に基づいてそれらを区別することは非常に一般的です。

つまりhttp://example.com、ブラウザに入力したときのHostヘッダーはでしたがexample.com、を入力し93.184.216.34たときはそうではありません。どちらの場合も同じWebサーバーにアクセスしますが、異なる応答を受信します(この特定の場合では200対404)。


4
誰かHostがそれを何のために使用し、どのWebサーバーが一般的にそれを使用するのかを少し拡大できますか?オンラインで検索するのはちょっと難しいです。というのは、その言葉は非常に過負荷だからです。
user1717828

1
tools.ietf.org/html/rfc7230#section-5.4 httpサーバーは、必要に応じてHostヘッダーを処理します。たとえば、httpdにはVirtualHost構成ディレクティブがあります。
ジョンマハワルド

19
よろしくお願いします!curl -H "Host: example.com" http://93.184.216.34/そのようなこともできます。
ホーカンLindqvist

13
言い換えると-「ウェブサイトのURLとIPアドレスの間に1対1の関係はありません。」
ピート

1
実際、特定のサーバー(93.184.216.34 2606:2800:220:1:248:1893:25c8:1946)は少なくとも example.com example.net example.org example.edu同じアドレスを処理するため、実際にはHostヘッダーに名前が必要です。
dave_thompson_085

14

通常、Webサーバーは「仮想サーバー」テクノロジーを使用し、WebサーバーのIPアドレスではなく、リクエストしたドメイン名内でHTTPリクエストに応答できるためです。1つのIPアドレスに複数のドメイン名を隠してくれてありがとう。

たとえば、Apache Webサーバーは、次のセクションを使用してIPアドレスでHTTPリクエストに応答できます。

<VirtualHost *:80>
ServerName Default
...
</VirtualHost>

または、設定でVirtualHostがまったく使用されていない場合。

ApacheのVirtualHost機能は1996年に導入されました。


10

では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がそれに関連付けられたエラードキュメントとともに送信されます。


8

「家」という用語を使用するのが好きです。

名前のない家に手紙を送ると、家に届きます。

その人の名前をその上に置くと、あなたは目的の受信者に送信していることになります。

目的地は同じですが、家に到着したときの処理方法は異なります。

サイト、つまりwww.example.comを指定すると、サーバーはリクエストの処理方法、どのホストを対象としているか、どのサイトを返送するかを認識します。


これは役立つメタファーです!
Redwolfプログラム

+1受信者名のアイデアが好きです。私は同様のアナロジーを考えていましたが、IPアドレスは物理的な建物(コンピューター)を識別しますが、アパート番号(ドメイン名)はマルチテナントの建物の実際の受信者を識別します。もちろん、これは非常に単純化されており、マルチテナントコンピューターはIPのみのアドレスサーバーを既定のサイトにすることができますが、これは良い例えだと思います。
jmbertucci

0

検索する重要な用語は「名前ベースの仮想ホスティング」です。

同じWebサーバーに複数のホスト名を割り当て、ホスト名ごとに異なるコンテンツを提供したいと考えています。これは、仮想ホスティングと呼ばれます(最近の仮想マシンの概念と混同しないでください)。

当初、仮想ホスティングは複数のIPアドレスをサーバーに割り当てることで行われ、サーバーは使用されたIPアドレスに基づいて異なるコンテンツを送信できましたが、これは無駄であると考えられていました。

そのため、最初は拡張機能として「ホスト」ヘッダーが導入されましたが、その後1997年にhttp 1.1仕様の必須部分になりました。このヘッダーは、クライアントが要求したホスト名を指定します。サーバーは、ヘッダーの値に基づいて異なるコンテンツを提供できます。


「しかしこれは無駄だと思われた。」レガシーv4接続のみ。すべての仮想ホストを異なるv6アドレスにセットアップすることが可能になりました。
Qwertie

1
私たちは、あなたの公共向けサービスをIPv6にすることだけが合理的なことであるという点からはまだ遠いです。
ピーターグリーン

0

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がメインストリームになった場合でも、サーバーはおそらく仮想ホストに固執します(サーバーコスト)。


0

専用IPアドレスは高価ですが、サーバー上に新しいWebサイトを作成することは基本的に無料です。

何が起こるかは、ホスティング会社が物理サーバーを指す単一のIPアドレスをレンタルし、「仮想ホスト」機能を使用してそのIPアドレスで数千のWebサイトをホストすることです。

私書箱のように考えてください。郵便局の住所を書き留めるだけで、ボックス番号がなければ、メールは配信されません。


0

技術的な詳細については多くの回答がありますが、最も簡単な高レベルの説明は、WebサーバーがそのIPアドレスでHTTPトラフィックを適切にリッスンしている場合でも、通常、特定のドメインに応答するようにサーバーを構成する必要があると思います名前、およびその名前はクライアント(つまり、Webブラウザー)によって送信された要求に含まれている必要があります

ほとんどの場合この方法で行われるため、「通常」と言いますが、実際には、IPアドレスのみを使用する場合に応答するようにhttpサーバーをセットアップできる方法があります。


-1

仮想IPと専用IPの違いを理解する必要があります。

Webサイトに専用(共有ではない)IPがある場合、(たとえば)http://123.456.789.012がWebサイトを表示します。

これを試してみてください。これは、私が所有しているサイトの専用IPアドレス、www.negativeiongenerators.com:http : //75.126.128.174 しかし、他の人が言っているように、通常は良い考えではありません。


1
これは普遍的に真実ではありません。Webサーバーの構成によって異なります。専用のIPアドレスを持ち、ホストなしではIPに応答しないことができます。また、共有IPアドレスを持ち、IPアドレスがサーバー上のWebサイトの1つを指すようにすることもできます。IPアドレスだけでWebサイトへのアクセスを許可しても、特に有用ではありませんが、何も問題はありません。
Qwertie
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.