почему мой блог нельзя посетить с IP-адресом? [закрыто]

Я создаю wordpress на wisdom.host22.com/wp, его можно посетить с wisdom.host22.com/wp в firefox.

enter image description here

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

IP-адрес домена 31.170.160.189 по результатам проверки связи.

Его нельзя посетить, чтобы ввести 31.170.160.189/wp в firefox, почему? Когда вводить 31.170.160.189/wp в firefox, URL-адрес перейдет на http://error404.000webhost.com/, почему?

enter image description here

0
задан 11 October 2015 в 11:19

2 ответа

Ваше приложение WordPress является одним из, вероятно, многих веб-сайтов, размещенных на host22.com.

Есть веб-сервер, прослушивающий IP 31.170.160.189 и обслуживающий вашу и все другие страницы.

Если сервер напрямую запрашивает его IP, как он должен знать, какой веб-сайт обслуживать? IP не принадлежит только вашему поддомену. В результате вы будете перенаправлены на страницу 404 NOT FOUND.

Когда его запрашивают по правильному имени хоста, например wisdom.host22.com, он знает, что делать, потому что имя хоста является частью HTTP-запроса, который делает браузер. Обслуживание контента в зависимости от заголовка запроса является обычной техникой, обычно называемой «Виртуальный хост». Таким образом, веб-сервер может предоставлять множество разных веб-сайтов с одного и того же IP-адреса.

Вы можете попробовать разницу в поведении из командной строки

Сначала давайте запросим ресурс /wp у веб-сервера и отправим его 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
[ 1119] Как и ожидалось, сервер отвечает, предоставляя страницу 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
ответ дан 30 September 2019 в 23:52

То, когда Вы отправляете запрос HTTP к серверу есть линия хозяина, включенная в него, когда апач получает это, это посылает его любому виртуальному хозяину, было определено для того адреса, как объяснено здесь:

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

Поэтому, если в сервере Вы создали, есть виртуальный хозяин к wisdom.host22.com, печатение имени хоста возьмет Вас там, но печать IP возьмет Вас к дефолту виртуальный хозяин, которым в этом случае, это кажется, не был определен.

я надеюсь, что это помогло.

0
ответ дан 30 September 2019 в 23:52

Другие вопросы по тегам:

Похожие вопросы: