Виртуальный хостинг — это метод размещения нескольких доменных имен (с отдельной обработкой каждого имени) на одном сервере (или пуле серверов). [1] Это позволяет одному серверу совместно использовать свои ресурсы, такие как память и циклы процессора, не требуя от всех предоставляемых услуг использовать одно и то же имя хоста. Термин виртуальный хостинг обычно используется в отношении веб-серверов , но принципы переносятся и на другие интернет -сервисы.
Одним из широко используемых приложений является общий веб-хостинг . Цена на общий веб-хостинг ниже, чем на выделенный веб-сервер , поскольку на одном сервере могут размещаться многие клиенты. Также очень часто одна организация хочет использовать несколько имен на одной машине, чтобы имена могли отражать предлагаемые услуги, а не то, где эти услуги размещаются.
Существует два основных типа виртуального хостинга: на основе имени и на основе 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. [2]
Например, сервер может получать запросы на два домена, www.example.com и www.example.net , оба из которых разрешаются в один и тот же IP-адрес. Для www.example.com сервер отправит HTML-файл из каталога /var/www/user/Joe/site/ , в то время как запросы для www.example.net заставят сервер обслуживать страницы из /var/www/user/Mary/site/ . Аналогично два поддомена одного домена могут размещаться вместе. Например, сервер блогов может размещать как blog1.example.com, так и blog2.example.com.
Самая большая проблема с виртуальным хостингом на основе имени заключается в том, что сложно размещать несколько защищенных веб-сайтов, работающих по протоколу SSL/TLS . Поскольку рукопожатие SSL/TLS происходит до того, как ожидаемое имя хоста будет отправлено на сервер, сервер не знает, какой сертификат следует представить в рукопожатии. Один сертификат может охватывать несколько имен либо через поле "subjectaltname", либо через подстановочные знаки, но практическое применение этого подхода ограничено административными соображениями и правилами сопоставления для подстановочных знаков. Существует расширение TLS, называемое Server Name Indication , которое представляет имя в начале рукопожатия, чтобы обойти эту проблему, за исключением некоторых старых клиентов (в частности, Internet Explorer в Windows XP или более старых версиях Android ), которые не реализуют SNI .
Кроме того, если система доменных имен (DNS) не функционирует должным образом, трудно получить доступ к виртуально размещенному веб-сайту, даже если известен IP-адрес. Если пользователь попытается вернуться к использованию IP-адреса для связи с системой, как в http://10.23.45.67/ , веб-браузер отправит IP-адрес в качестве имени хоста. Поскольку веб-сервер полагается на то, что клиент веб-браузера сообщает ему, какое имя сервера (vhost) использовать, сервер ответит веб-сайтом по умолчанию — часто не тем сайтом, который ожидает пользователь.
Обходной путь в этом случае — добавить IP-адрес и имя хоста в файл hosts клиентской системы . Доступ к серверу с помощью доменного имени должен снова работать. Однако пользователи должны быть осторожны, делая это, поскольку любые изменения в истинном сопоставлении имени хоста и IP-адреса будут переопределены локальными настройками. Этот обходной путь не очень полезен для обычного веб-пользователя, но может быть полезен администратору сайта при исправлении записей DNS.
При использовании виртуального хостинга на основе IP каждый сайт (имя хоста DNS или группа имен хостов DNS, которые действуют одинаково) указывает на уникальный IP-адрес. Веб-сервер настроен с несколькими физическими сетевыми интерфейсами, виртуальными сетевыми интерфейсами на одном физическом интерфейсе или несколькими IP-адресами на одном интерфейсе. Веб-сервер может либо открыть отдельные прослушивающие сокеты для каждого IP-адреса, либо прослушивать все интерфейсы с одним сокетом и получать IP-адрес, на который было получено TCP-соединение, после принятия соединений. В любом случае он может использовать IP-адрес для определения того, какой веб-сайт обслуживать. Клиент не участвует в этом процессе, и поэтому (в отличие от виртуального хостинга на основе имени) нет проблем с совместимостью.
Недостатком этого подхода является то, что серверу нужен отдельный IP-адрес для каждого веб-сайта. Это увеличивает административные издержки (как на назначение адресов серверам, так и на обоснование использования этих адресов в интернет-реестрах) и способствует исчерпанию адресов IPv4 .
Виртуальный веб-хостинг часто используется в больших масштабах в компаниях, чья бизнес-модель заключается в предоставлении недорогого веб-хостинга для клиентов. Подавляющее большинство веб-сайтов клиентов услуг веб-хостинга по всему миру размещаются на общих серверах с использованием технологии виртуального хостинга.
Многие коммерческие компании используют виртуальные серверы для внутренних целей, когда есть технологическая или административная причина для работы нескольких отдельных веб-сайтов, таких как веб-сайт экстрасети клиентов, экстрасети сотрудников , внутренней интрасети и интрасетей для разных отделов. Если в архитектуре веб-сайтов нет проблем с безопасностью, их можно объединить в один сервер с помощью технологии виртуального хостинга, что снижает управленческие и административные издержки , а также количество отдельных серверов, необходимых для поддержки бизнеса.
количество отдельных IP-адресов было бы хорошим приближением к количеству реальных сайтов, поскольку хостинговые компании обычно выделяли IP-адрес каждому сайту с отдельным контентом, а несколько доменных имен могли указывать на IP-адрес, используемый для обслуживания одного и того же контента сайта. Однако с принятием виртуального хостинга HTTP/1.1 и доступностью технологии балансировки нагрузки стало возможным надежно размещать большое количество активных сайтов на одном (или относительно небольшом количестве) IP-адресов.
{{cite journal}}
: Цитировать журнал требует |journal=
( помощь )