Переход к IP-адресу показывает другую страницу, чем переход к имени хоста? - PullRequest
2 голосов
/ 05 июня 2009

Я смотрю на веб-сайт, который мы будем называть www.example.com. Быстрый traceroute www.example.com показывает, что его IP-адрес 208.76.xx.xxx.

Когда я захожу на «www.example.com» в Firefox, мне показывают веб-сайт (страницу входа). Однако, когда я перехожу к 208.76.xx.xxx, мне по умолчанию показывается «Добро пожаловать в cPanel!» веб-страница.

Вот еще немного информации:

  1. Когда я перехожу на "www.example.com" или "http://www.example.com" в Firefox, меня перенаправляют на" http://example.com", где я вижу обычную веб-страницу.
  2. curl -L www.example.com возвращает веб-сайт, а curl -L 208.76.xx.xxx возвращает «Welcome to cPanel!» стр.
  3. Глядя только на заголовки: curl -LI www.example.com показывает, что я перенаправлен на страницу входа на сайт (как и ожидалось), в то время как curl -LI 208.76.xx.xxx не имеет перенаправления.
  4. 208.76.xx.xxx не отображается в моем файле hosts.
  5. Я использую OpenDNS.

Может кто-нибудь объяснить, почему при переходе на доменное имя сайта отображается совершенно другая страница, чем при переходе по IP-адресу сайта?

Спасибо за вашу помощь и не стесняйтесь задавать вопросы / предлагать тесты для меня.

Ответы [ 6 ]

11 голосов
/ 05 июня 2009

Это называется виртуальный хостинг.

Один веб-сервер (и IP-адрес) может обслуживать тысячи сайтов с разными полями Host: в HTTP-запросах.

Вы спрашиваете браузер для example.org; браузер сообщает серверу

GET / HTTP/1.1
Host: example.org
Connection: close

Веб-сервер ищет, может ли он обслуживать example.org, если он может, он будет обслуживать корневую страницу для этого конкретного сайта.

Прокси-серверы также работают таким образом: ваш браузер отправляет каждый HTTP-запрос к прокси-серверу, давая Host :, прокси-сервер подключается к этому хосту, запрашивает страницу и возвращает ее в кеше.

2 голосов
/ 05 июня 2009

Это называется виртуальным хостингом. Именно здесь веб-сервер (Apache и т. Д.) Обслуживает различное содержимое в зависимости от имени хоста, используемого в запросах.

1 голос
/ 05 июня 2009

Веб-сервер можно настроить так, чтобы он реагировал по-разному в зависимости от того, какое имя хоста использовалось для получения IP-адреса. Это известно как виртуальный хостинг на основе имен (в отличие от IP). В разделе Виртуальные хосты на основе имен против IP-адресов документа Apache Поддержка виртуальных хостов на основе имен объясняется более подробно.

1 голос
/ 05 июня 2009

Это конфигурация веб-сервера. Веб-сервер проверит запрошенное имя хоста и покажет веб-сайт, настроенный для этого имени хоста.

0 голосов
/ 10 июня 2009

Краткая версия: это не один и тот же запрос.

Наиболее вероятный ответ - то, что было предоставлено alamar (за что я тоже проголосовал), но также есть много возможных факторов, которые вы не проверяли:

1- результат двух URL в разных HTTP-запросах.

Это результат работы HTTP. На сетевом уровне вы предполагаете, что установлено одно и то же соединение (с HTTP-портом имени хоста), что верно. Однако сервер возвращает содержимое на основе других переменных уровня приложения (HTTP).

2- Соединение фактически не было установлено с IP-адресом. Есть много механизмов, которые обеспечивают косвенное обращение к сети. Наиболее важными являются: настройка прокси и кеширование DNS. В любом случае, использование netstat для подтверждения соединения - лучший способ действий.

3- Третье лицо изменяет содержимое.

Это может быть как по хорошим, так и по плохим причинам. У вас может быть программное обеспечение безопасности, NAT из точки доступа WiFi и т. Д.

0 голосов
/ 05 июня 2009

Две части:

  1. Запрос http на сервер включает имя хоста, поэтому служба http на сервере может реагировать по-разному в зависимости от веб-сайта, к которому вы пытаетесь подключиться. (Я только что узнал об этом прошлой ночью).
  2. Перенаправление происходит на основе имени хоста, а не IP-адреса. Если вы не используете имя хоста, сервер не знает, как вас перенаправить.
...