なぜ私のブログは IP アドレスでアクセスできないのですか?

なぜ私のブログは IP アドレスでアクセスできないのですか?

私は Wisdom.host22.com/wp に WordPress を構築しました。Firefox でアクセスできますwisdom.host22.com/wp

ここに画像の説明を入力してください

ping wisdom.host22.com
PING wisdom.host22.com (31.170.160.189) 56(84) bytes of data.
64 bytes from 31.170.160.189: icmp_seq=1 ttl=46 time=307 ms

ping の結果、ドメインの IP アドレスは 31.170.160.189 です。

Firefoxで31.170.160.189/wpを入力してもアクセスできないのはなぜですか?31.170.160.189/wpFirefoxで入力すると、URLがジャンプします http://error404.000webhost.com/,why?

ここに画像の説明を入力してください

答え1

あなたの WordPress アプリケーションは、 でホストされているおそらく多数の Web サイトのうちの 1 つですhost22.com

31.170.160.189IP をリッスンし、あなたのページと他のすべてのページを提供するWeb サーバーがあります。

サーバーが IP で直接クエリされた場合、どの Web サイトを提供するかはどのようにしてわかるのでしょうか。IP はサブドメインに排他的に属するものではありません。その結果、ページにリダイレクトされます404 NOT FOUND

のような適切なホスト名でクエリされるとwisdom.host22.com、ホスト名はブラウザが行う HTTP リクエストの一部であるため、何をすべきかがわかります。リクエスト ヘッダーに応じてコンテンツを提供するのは、通常「仮想ホスト」と呼ばれる一般的な手法です。この方法により、Web サーバーは同じ IP アドレスからさまざまな Web サイトを提供できます。

コマンドラインから動作の違いを試すことができます

/wpまず、 Web サーバーからリソースを要求し、その IP アドレスを次のように送信しますHost

$ echo -e "GET /wp/ HTTP/1.1\nHost: 31.170.160.189\n" | netcat 31.170.160.189 80
HTTP/1.1 302 Found
Date: Sun, 11 Oct 2015 09:05:30 GMT
Server: Apache
Location: http://error404.000webhost.com/?
Content-Length: 216
Connection: close
Content-Type: text/html; charset=iso-8859-1

予想どおり、サーバーは404ページを提供することで応答します。

今度は同じことをしますが、Hostサブドメインを適切に設定します

$ echo -e "GET /wp/ HTTP/1.1\nHost: wisdom.host22.com\n" | netcat 31.170.160.189 80
HTTP/1.1 200 OK
Date: Sun, 11 Oct 2015 09:08:50 GMT
Server: Apache
X-Powered-By: PHP/5.2.17
X-Pingback: http://wisdom.host22.com/wp/xmlrpc.php
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8

今回は、サーバーは (ステータス コード200 OK) に準拠し、WordPress ホームページを提供します。

このnetcatコマンドは、ポート 80 でサーバーへの接続を開きます。次に、リクエスト (echo部分) がサーバーに送信されます。HTTP はプレーンテキスト プロトコルです。サーバーと「対話」するだけです。

答え2

HTTP リクエストをサーバーに送信すると、その中にホスト行が含まれます。Apache はこれを受信すると、ここで説明されているように、そのアドレスに定義されている仮想ホストにリクエストを送信します。

https://serversforhackers.com/configuring-apache-virtual-hosts

したがって、作成したサーバーに Wisdom.host22.com の仮想ホストがある場合、ホスト名を入力するとそこに移動しますが、IP を入力するとデフォルトの仮想ホストに移動します。この場合、デフォルトの仮想ホストは定義されていないようです。

これが役に立つことを願っています。

関連情報