
Как я могу иметь это, когда у меня есть один IP-адрес, который находится в Интернете, но много веб-имен? Например, когда у хостинговой компании есть общий IP, но я получаю неограниченное количество доменных имен (вместе со всеми остальными на этом ящике).
У меня есть ящик в Интернете, но я хочу указать на другую машину, которая содержит другой веб-сайт, когда кто-то вводит другой www... (он находится прямо рядом с ним, просто в другом ящике). Это все поддомены? Спасибо.
Я хостинговая компания
решение1
Это часть протокола 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.
редактировать
** в комментарияхГравитацияуказывает, что в спецификации TLS есть расширения SSL, которые позволяют серверу узнать, к какому веб-сайту пользователь пытается получить доступ, и что большинство современных веб-браузеров имеют эти расширения, поэтомудолженнемного слишком сильно.
решение2
Все современные браузеры отправляют вместе с запросом нечто, называемое заголовком «Host:».
Фактический запрос, который Firefox отправляет для этой страницы, выглядит следующим образом:
Хост: superuser.com User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.1.7) Gecko/20091221 Firefox/3.5.7 (.NET CLR 3.5.30729) Принять: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Принять-Язык: en-us,en;q=0.5 Принять-кодирование: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Поддержание активности: 300 Соединение: поддерживать активность
Как вы можете видеть,
Хост: superuser.combit идентифицирует рассматриваемый веб-сайт.
В IIS и Apache можно настроить виртуальные веб-сайты, которые принимают запросы только с определенной комбинации IP/хоста.
Что касается вашей конкретной проблемы, вам придется прочитать о том, как ваша конкретная хостинговая компания хочет, чтобы вы запрашивали конфигурацию.
решение3
Метод размещения более одного домена/поддомена на одном IP-адресе/хосте называетсявиртуальные хосты. Запрос http get содержит доменное имя, к которому относится запрос, что позволяет веб-серверу сопоставить запрос с определенным виртуальным доменом.
Если у вас есть несколько внутренних физических хостов с одним внешним IP-адресом, то вам следует рассмотреть возможность настройкиобратный проксидля пересылки запросов на правильный IP-адрес машины/внутренний IP-адрес.
решение4
Суммируя...
Первое — настройте записи DNS для различных доменов так, чтобы все они указывали на ваш сервер.
Второе — как описано другими, настройте свой веб-сервер (вы не указываете, какой именно) для соответствия запрошенному имени хоста.
Таким образом, все запросы для всех ваших доменов поступают на один и тот же компьютер, а его конфигурация берет запрошенный домен и направляет его в нужную папку, содержащую контент этого сайта.