Как IIS определяет, какой сайт нужно использовать для localhost - PullRequest
1 голос
/ 22 июня 2009

У меня настроена машина разработки с IIS 6. У меня 3 веб-сайта, настроенных на разные IP-адреса:

По умолчанию (все неназначенные) WS1 (192.168.1.250) WS2 (192.168.1.249)

Мне было интересно, как IIS определяет, какой сайт нужно использовать, когда я указываю localhost в URL? Это настраивается? Если да, то как мне это сделать?

Ответы [ 5 ]

9 голосов
/ 22 июня 2009

Когда IIS отвечает на запрос HTTP, использует 3 элемента информации, чтобы выяснить, какой веб-сайт следует использовать для создания ответа.

  1. IP-адрес - браузер использует имя в адресной строке для выполнения DNS-запроса и получения фактического IP-адреса хоста. Он отправляет запрос http на этот IP-адрес.
  2. Порт - по умолчанию это 80 для не SSL-запросов и 443 для SSL.
  3. заголовок хоста. Часть http-запроса - заголовок хоста. Этот заголовок хоста совпадает с доменным именем адреса, запрошенного пользователем, включая имена поддоменов или хостов. Например: www.foo.com secure.foo.com server1.foo.com subdomain.foo.com server2.subdomain.foo.com и т. Д.

Предположения, основанные на вашем вопросе:

1 - вашей машине назначено 3 IP-адреса:

  • 192.168.1.250 - назначен веб-сайтом 1, имя WS1
  • 192.168.1.249 - присваивается как web-stie 2, имя WS2
  • WS1 и WS2 определены в IIS и сопоставлены с соответствующим IP-адресом

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

3 - веб-сайт по умолчанию в IIS имеет настройку IP-адреса: (All Unassigned).

4 - Вы не указали заголовки или порты хоста в конфигурации IIS.

Итак, когда вы запускаете браузер на своей машине, вы набираете: http://localhost (без номера порта), что делает IIS?

За предыдущие ответы браузер преобразует localhost в 127.0.0.1 в качестве IP-адреса и создает HTTP-запрос для этого IP-адреса. Заголовок хоста будет localhost.

В этом сценарии IIS увидит, что и WS1, и WS2 не имеют совпадающих IP-адресов, и поэтому для обработки запроса будет использоваться сайт по умолчанию.

Если вы хотите, чтобы WS1 или WS2 отвечали на запрос, отключите сайт по умолчанию и измените настройку IP-адреса на (All Unassigned) для WS1 или WS2.

3 голосов
/ 22 июня 2009

localhost обычно означает 127.0.0.1, который является специальным IP-адресом, называемым Loopback Address, который всегда и везде определяется как «текущий компьютер». Это не то же самое, что внешний IP-адрес вашего веб-сервера: если IIS ожидает подключения к IP-адресу 192.168.1.250, то подключение к 127.0.0.1 не будет совпадать.

localhost настраивается в файле Hosts (обычно находится в C:\Windows\System32\Drivers\Etc\Hosts). Но не переконфигурируйте его, потому что, если вы переконфигурируете его, потенциально может произойти сбой многих программ.

Вместо этого вы можете настроить альтернативные домены в файле Hosts. Например, вы могли бы сделать

192.168.1.250   my.internal.website.com
192.168.1.249   your.internal.website.org

и затем, если вы перейдете на один из этих доменов, IIS увидит правильный IP-адрес и покажет нужный вам сайт.

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

localhost - это то же самое, что и 127.0.0.1, поэтому я предполагаю, что подпадает под All Unassigned, поскольку он не соответствует ни одному из ваших других IP-адресов.

0 голосов
/ 12 июля 2012

Вот простое исправление:

Добавьте привязку к этому сайту с протоколом: http, порт: 80 и без имени хоста через клиент IIS. inetmgr.exe.

от http://tipila.com/tips/93/configure-a-web-site-to-respond-to-localhost-addresses-in-iis

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

"localhost" сопоставлен с 127.0.0.1 в

C: [каталог Windows] \ system32 \ drivers \ etc \ hosts

Расширения нет, но hosts - это текстовый файл, который вы можете редактировать в любом текстовом редакторе.

...