Введение
Хостинг нескольких доменных имен на одном сервере
виртуальный хостинг доменных имен
virtual domain name hosting
Виртуальный хостинг – это метод размещения нескольких доменных имен (с раздельной обработкой каждого имени) на одном сервере (или группе серверов). Это позволяет одному серверу совместно использовать свои ресурсы, такие как память и процессорное время, без необходимости, чтобы все предоставляемые услуги использовали одно и то же имя хоста. Термин «виртуальный хостинг» обычно используется по отношению к веб-серверам, но принципы применимы и к другим интернет-сервисам. Одним из широко распространенных применений является общий веб-хостинг. Стоимость общего веб-хостинга ниже, чем у выделенного сервера, поскольку на одном сервере можно разместить множество клиентов. Также часто бывает, что одной организации требуется использовать несколько имен на одной машине, чтобы имена отражали предлагаемые услуги, а не место их размещения. Существуют два основных типа виртуального хостинга: на основе имени и на основе IP-адреса. Виртуальный хостинг на основе имени использует имя хоста, предоставленное клиентом. Это позволяет экономить IP-адреса и связанные с ними административные расходы, но обслуживаемый протокол должен предоставлять имя хоста в соответствующей точке. В частности, существуют значительные трудности при использовании виртуального хостинга на основе имени с SSL/TLS. Виртуальный хостинг на основе IP-адреса использует отдельный IP-адрес для каждого имени хоста и может быть выполнен с использованием любого протокола, но требует выделенный IP-адрес для каждого обслуживаемого доменного имени. Виртуальный хостинг на основе портов также возможен в принципе, но на практике используется редко, поскольку он неудобен для пользователей. Виртуальный хостинг на основе имени и IP-адреса можно комбинировать: сервер может иметь несколько IP-адресов и обслуживать несколько имен на некоторых или всех этих IP-адресах. Этот метод может быть полезен при использовании SSL/TLS с wildcard-сертификатами. Например, если у оператора сервера есть два сертификата, один для *.example.com и один для *.example.net, оператор может обслуживать foo.example.com и bar.example.com с одного и того же IP-адреса, но для baz.example.net потребуется отдельный IP-адрес.
На основе названия
Виртуальные хосты, основанные на имени, используют несколько имен хоста для одного и того же IP-адреса. Техническим требованием для виртуальных хостов, основанных на имени, является веб-браузер с поддержкой HTTP/1.1 (что распространено сегодня), способный включать целевое имя хоста в запрос. Это позволяет серверу, размещающему несколько сайтов за одним IP-адресом, предоставлять контент нужного сайта. Более конкретно, это означает установку HTTP-заголовка Host, которая является обязательной в HTTP/1.1. Например, сервер может получать запросы для двух доменов, example.com и example.net, оба из которых разрешаются в один и тот же IP-адрес. Для example.com сервер будет отправлять HTML-файл из каталога /var/www/example.com, в то время как запросы для example.net заставят сервер обслуживать страницы из /var/www/example.net. Аналогично, два поддомена одного домена могут быть размещены совместно. Например, сервер блога может размещать как blog1.example.com, так и blog2.example.com. Основная проблема с виртуальным хостингом, основанным на имени, заключается в сложности размещения нескольких защищенных веб-сайтов, использующих SSL/TLS. Поскольку рукопожатие SSL/TLS происходит до отправки ожидаемого имени хоста на сервер, сервер не знает, какой сертификат предоставить. Один сертификат может охватывать несколько имен либо через поле "subjectaltname", либо с помощью подстановочных знаков (wildcards), но практическое применение этого подхода ограничено административными соображениями и правилами сопоставления для подстановочных знаков. Существует расширение TLS под названием Server Name Indication (SNI), которое передает имя в начале рукопожатия, чтобы обойти эту проблему, за исключением некоторых старых клиентов (в частности, Internet Explorer на Windows XP или более старых версий Android), которые не поддерживают SNI. Кроме того, если система доменных имен (DNS) работает некорректно, получить доступ к виртуально размещенному веб-сайту будет сложно, даже если известен IP-адрес. Если пользователь попытается использовать IP-адрес для связи с системой, например, 192.168.1.100, веб-браузер отправит IP-адрес в качестве имени хоста. Поскольку веб-сервер полагается на то, что клиент веб-браузера сообщит ему, какое имя сервера (vhost) использовать, сервер ответит веб-сайтом по умолчанию – часто не тем, который ожидает пользователь. В этом случае можно добавить IP-адрес и имя хоста в файл hosts клиентской системы. Доступ к серверу по доменному имени должен снова заработать. Однако пользователям следует быть осторожными, так как любые изменения в реальном сопоставлении между именем хоста и IP-адресом будут переопределены локальной настройкой. Это решение не очень полезно для обычного пользователя, но может быть полезно администратору сайта при исправлении записей DNS.
На основе IP
При использовании виртуального хостинга на основе IP-адресов каждый сайт (будь то DNS-имя хоста или группа DNS-имён, работающих как единое целое) указывает на уникальный IP-адрес. Веб-сервер конфигурируется с несколькими физическими сетевыми интерфейсами, виртуальными сетевыми интерфейсами на одном физическом интерфейсе или несколькими IP-адресами на одном интерфейсе. Веб-сервер может либо открывать отдельные сокеты прослушивания для каждого IP-адреса, либо прослушивать все интерфейсы с помощью одного сокета и определять IP-адрес, на который было принято TCP-соединение, после установления соединения. В любом случае, он может использовать IP-адрес для определения, какой веб-сайт обслуживать. Клиент не участвует в этом процессе, и поэтому (в отличие от виртуального хостинга на основе имени) не возникает проблем совместимости. Недостатком этого подхода является необходимость в отдельном IP-адресе для каждого веб-сайта. Это увеличивает административную нагрузку (как при назначении адресов серверам, так и при обосновании использования этих адресов перед интернет-регистраторами) и усугубляет проблему исчерпания IPv4-адресов.
Применение
Виртуальный веб-хостинг часто широко используется в компаниях, бизнес-модель которых основана на предоставлении недорогого хостинга веб-сайтов для клиентов. Подавляющее большинство веб-сайтов клиентов веб-хостинга во всем мире размещаются на общих серверах с использованием технологии виртуального хостинга. Многие компании используют виртуальные серверы для внутренних нужд, когда существует технологическая или административная необходимость в работе нескольких отдельных веб-сайтов, таких как клиентский экстранет, экстранет для сотрудников, внутренняя интрасеть и интрасети для различных отделов. Если архитектура веб-сайтов не вызывает опасений с точки зрения безопасности, их можно объединить на одном сервере с помощью технологии виртуального хостинга, что снижает затраты на управление и администрирование, а также количество отдельных серверов, необходимых для поддержки бизнеса.