Это часть протокола HTTP 1.1.
В частности, протокол HTTP 1.1 включает в себя заголовок, называемый «host:», который указывает, к какому веб-сайту на конкретном сервере клиент пытается получить доступ.
Таким образом, если snoopy.net и woodstock.org совместно используют 192.0.32.10 и ваш браузер пытается получить контент из http://snoopy.net/doghouse
конкретного http-запроса, он будет выглядеть так:
GET /doghouse HTTP/1.1
Host: snoopy.net
Если желаемым URL является http://woodstock.org/seeds
запрос будет выглядеть
GET /seeds HTTP/1.1
Host: woodstock.org
В обоих случаях между вашим компьютером и портом 80 сервера будет TCP-сокет. Сервер будет знать, как получить содержимое из /var/www/snoopy.net или /var/www/woodstock.org/ на основе заголовка Host.
Были бы другие заголовки для файлов cookie и другие вещи, такие как тип браузера и разрешенный контент, но именно заголовок «Host» - это то, что позволяет веб-серверу знать, какой виртуальный веб-сайт желателен.
Там больше в RFC2616 .
Именно поэтому сайты https * должны *** иметь собственный IP-адрес - обмен ключами ssl и проверка сертификата выполняются до транзакции http, поэтому сервер http не будет знать, выдать ли сертификат для «woodstock». org "или" snoopy.net ", когда он получает соединение https через порт 443 из 192.0.32.10.
редактировать
** в комментариях Grawity указывает, что в спецификации TLS есть расширения для SSL, которые позволяют серверу знать, к какому веб-сайту пытается обратиться пользователь, и что большинство современных веб-браузеров имеют эти расширения, так что, должно быть, слишком сильный.
Что-то, что все современные браузеры отправляют вместе с запросом, называется заголовком «Host:».
Фактический запрос, который Firefox отправляет на эту страницу:
Как видите,
бит идентифицирует рассматриваемый сайт.В IIS и Apache вы можете настроить виртуальные веб-сайты, которые принимают запросы только от определенной комбинации IP / хоста.
Что касается вашей конкретной проблемы, вам придется прочитать о том, как ваша конкретная хостинговая компания просит вас запросить конфигурацию.
источник
Техника размещения нескольких доменов / поддоменов на одном IP-адресе / хосте называется виртуальными хостами . Запрос http get содержит имя домена, к которому относятся запросы, что позволяет веб-серверу сопоставить запрос с конкретным виртуальным доменом.
Если у вас есть несколько физических хостов внутри с одним внешним IP-адресом, вам нужно будет настроить обратный прокси-сервер для перенаправления запросов на правильный компьютер / внутренний IP-адрес.
источник
Функция на вашем веб-сервере обычно называется «виртуальными хостами». Как только вы указываете записи DNS, чтобы они указывали на этот один IP-адрес (как указано в других ответах), сервер затем будет обслуживать разные сайты в зависимости от того, какой запрашиваемый хост.
Насколько указывает на другую коробку идет. Вы можете настроить перенаправления на большинстве веб-серверов, если ожидаете получить запрос первым. Если вы говорите о поддоменах, то все, что вам нужно сделать, это указать каждому из поддоменов свой IP-адрес.
то есть host.com -> IP 1, затем www.host.com -> IP 2 и mail.host.com -> IP 3
Если вы хотите получить более конкретные ответы, вам нужно указать, какое программное обеспечение веб-сервера используется в какой операционной системе.
Возможно, вы найдете ServeFault лучше для этого вопроса.
источник
Короче...
Один - Установите записи DNS для ваших различных доменов, чтобы все указывали на ваш ящик.
Два - Как описано другими, настройте свой веб-сервер (вы не говорите, какой), чтобы он соответствовал запрошенному имени хоста.
Таким образом, все запросы ко всем вашим доменам отправляются на один и тот же компьютер, и его конфигурация берет запрошенный домен и направляет его в нужную папку, содержащую содержимое этого сайта.
источник
Из вашего вопроса мне кажется, что у вас есть отдельный физический сервер для второго сайта. В этом случае вы не сможете использовать один IP-адрес для двух серверов. Вы можете либо: а) получить второй общедоступный IP-адрес для вашего второго хоста, либо б) настроить интеллектуальный прокси-сервер, который перенаправляет запросы на разные серверы вашей внутренней сети на основе заголовков хоста. Я почти уверен, что б) возможно, но я не имею ни малейшего представления о том, как это работает, поэтому вам придется спросить кого-то еще, пытаетесь ли вы это сделать.
источник
Если я правильно понял ваш вопрос, у вас есть два разных компьютера, использующих IP-адрес через NAT (преобразование сетевых адресов)? Если это так, вам нужно будет, чтобы один сайт прослушивал другой порт (не 80) - я не знаю хорошего способа, чтобы маршрутизатор отправлял запросы на другие компьютеры на основе метаданных HTTP «Host». Вам лучше просто получить второй IP-адрес для вашего второго сервера.
источник