Связывание IIS с несколькими сайтами и конфигурация хостов - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь настроить несколько веб-сайтов для работы на одном сервере с IIS 7.5. Однако у меня возникают проблемы с доступом ко второму веб-сайту с компьютера в сети, но я не знаю, какая должна быть правильная конфигурация.

Веб-сайт по умолчанию работает как локально, так и удаленно. То есть если я введу localhost на сервере, он будет работать, и если я введу IP-адрес сервера с другого компьютера, он также будет работать.

Имеются следующие настройки привязок:

- IP address: All unassigned 
- Port: 80
- Host name: blank 

Однако второй веб-сайт (называемый "testapp") работает только локально. То есть Я могу получить к нему доступ, когда нахожусь на сервере, введя имя узла привязки, но когда я пытаюсь получить к нему доступ с другого компьютера, набрав «ip address / TestApp /». Возвращает ошибку 404 - файл или каталог не найден.

Имеет следующие настройки:

- IP address: All unassigned 
- Port: 80
- Host name: testapp

и запись в файле hosts

- 127.0.0.1     testapp

Я знаю, что, возможно, мне просто не хватает чего-то простого, но любая помощь будет признательна!

1 Ответ

0 голосов
/ 06 июля 2018

"ip address/TestApp/" будет отправлять трафик на веб-сайт по умолчанию (он также будет делать это с сервера, на котором размещен TestApp). Вам нужно настроить DNS, чтобы ваши клиенты могли использовать имя хоста для разрешения IP-адреса или добавить файл хоста на каждом компьютере, который подключается, если у вас нет службы DNS для именованных привязок, чтобы работать так, как вы ожидаете.

«Под капотом», когда браузер отправляет HTTP-запрос (т. Е. Вводит URL / щелкает ссылку), имя домена отправляется в заголовке HTTP HOST, этот заголовок используется IIS для определения того, какой сайт (то есть привязка) трафик отправляется. При использовании IP вы не предоставляете имя хоста, поэтому заголовок HOST не отправляется, поэтому IIS будет направлять трафик на сайт по умолчанию (т. Е. Привязку без указания имени хоста).

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

Запустите Telnet с помощью telnet 192.168.1.2 80" (измените IP для своего сервера), затем скопируйте / вставьте или введите следующие 2 строки в окно telnet, затем пустую строку:

GET /TestApp/ HTTP/1.1
host: testapp

Вы должны увидеть HTML, возвращенный с этого URL. Если вы попробуете описанное выше, но пропустите host, вы получите HTML-код с веб-сайта по умолчанию (или страницы 404 и т. Д.)

...