Apache. Документация на русском


Разделы:   1    2      3      4    5    6    7    8    9    10    11    12    13    14    15    16  

Раздел 3. Документация по виртуальному хосту Apache

Пункты:     28      29    30    31    32    33  

 <         > 
  RU            EN  

Пункт 28. Виртуальные хосты на основе имен

В этом документе описывается, когда и как использовать виртуальные хосты на основе имен.

Виртуальные хосты на основе имени и на основе IP

Виртуальные хосты на основе IP используют IP-адрес подключения для определения правильного обслуживаемого виртуального хоста. Поэтому вам нужно иметь отдельный IP-адрес для каждого хоста.

При виртуальном хостинге на основе имени сервер полагается на то, что клиент сообщает имя хоста как часть заголовков HTTP. Используя этот метод, многие разные хосты могут использовать один и тот же IP-адрес.

Виртуальный хостинг на основе имени обычно проще, поскольку вам нужно только настроить DNS-сервер для сопоставления каждого имени хоста с правильным IP-адресом, а затем настроить HTTP-сервер Apache для распознавания разных имен хостов. Виртуальный хостинг на основе имени также снижает потребность в дефицитных IP-адресах. Поэтому вам следует использовать виртуальный хостинг на основе имени, если только вы не используете оборудование, которое явно требует хостинга на основе IP. Исторические причины виртуального хостинга на основе IP, основанного на поддержке клиентов, больше не применимы к веб-серверу общего назначения.

Виртуальный хостинг на основе имени основан на алгоритме выбора виртуального хоста на основе IP, что означает, что поиск правильного имени сервера происходит только между виртуальными хостами, которые имеют лучший IP-адрес.

Как сервер выбирает правильный виртуальный хост на основе имени

Важно понимать, что первым шагом в разрешении виртуальных хостов на основе имени является разрешение на основе IP. Разрешение виртуального хоста на основе имени выбирает только наиболее подходящий виртуальный хост на основе имени после сужения кандидатов до наилучшего совпадения на основе IP. Использование подстановочного знака (*) для IP-адреса во всех директивах VirtualHost делает это сопоставление на основе IP неактуальным.

Когда поступает запрос, сервер находит лучший (наиболее конкретный) соответствующий <VirtualHost> аргумент на основе IP-адреса и порта, используемых запросом. Если существует более одного виртуального хоста, содержащего эту наиболее подходящую комбинацию адреса и порта, Apache дополнительно сравнит директивы ServerName и ServerAlias с именем сервера, представленным в запросе.

Если вы опустите ServerName директиву для любого виртуального хоста на основе имени, сервер по умолчанию будет использовать полное доменное имя (FQDN), полученное из системного имени хоста. Это неявно заданное имя сервера может привести к нелогичному сопоставлению виртуальных хостов и не рекомендуется.

Виртуальный хост по умолчанию на основе имени для комбинации IP и порта

Если в наборе виртуальных хостов, содержащих наиболее конкретную совпадающую комбинацию IP-адреса и порта, не найдено подходящего имени сервера или псевдонима сервера, то будет использоваться первый виртуальный хост из списка , который соответствует этому.

Использование виртуальных хостов на основе имен

Первый шаг — создать <VirtualHost> блок для каждого хоста, который вы хотите обслуживать. Внутри каждого <VirtualHost> блока вам потребуется как минимум ServerName директива для указания, какой хост обслуживается, и DocumentRoot директива, показывающая, где в файловой системе находится контент для этого хоста.

Главный хозяин уходит

Любой запрос, который не соответствует существующему, <VirtualHost> обрабатывается глобальной конфигурацией сервера, независимо от имени хоста или имени сервера.

Когда вы добавляете виртуальный хост на основе имени к существующему серверу, а аргументы виртуального хоста соответствуют ранее существовавшим комбинациям IP-адреса и порта, запросы теперь будут обрабатываться явным виртуальным хостом. В этом случае обычно целесообразно создать виртуальный хост по умолчанию, соответствующий ServerName базовому серверу. Новые домены с тем же интерфейсом и портом, но требующие отдельных конфигураций, затем могут быть добавлены как последующие (не используемые по умолчанию) виртуальные хосты.

Наследование имени сервера

Лучше всегда явно указывать a ServerName в каждом виртуальном хосте на основе имени.

Если a VirtualHost не указывает ServerName , имя сервера будет унаследовано от базовой конфигурации сервера. Если глобальное имя сервера не указано, оно обнаруживается при запуске посредством обратного разрешения DNS первого адреса прослушивания. В любом случае это унаследованное имя сервера будет влиять на разрешение виртуального хоста на основе имени, поэтому лучше всегда явно указывать a ServerName в каждом виртуальном хосте на основе имени.

Например, предположим, что вы обслуживаете домен www.example.com и хотите добавить виртуальный хост other.example.com , который указывает на тот же IP-адрес. Затем вы просто добавляете следующее apache2.conf :

 <Виртуальный хост *:80>
 # Этот первый виртуальный хост также используется по умолчанию для *:80
 Имя сервера www.example.com
 Псевдоним сервера example.com
 DocumentRoot "/www/домен"
</ виртуальный хост>
<Виртуальный хост *:80>
 Имя_сервера other.example.com
 DocumentRoot "/www/otherdomain"
</ виртуальный хост> 

В качестве альтернативы вы можете указать явный IP-адрес вместо директив * in <VirtualHost> . Например, вы можете захотеть сделать это, чтобы запустить некоторые виртуальные хосты на основе имени на одном IP-адресе и либо на основе IP, либо другой набор виртуальных хостов на основе имени на другом адресе.

Многие серверы хотят быть доступными более чем по одному имени. Это возможно с помощью ServerAlias директивы, размещенной внутри <VirtualHost> секции. Например, в первом <VirtualHost> блоке выше ServerAlias директива указывает, что перечисленные имена — это другие имена, которые люди могут использовать для просмотра того же веб-сайта:

 Псевдоним сервера example.com *.example.com 

тогда запросы для всех хостов в example.com домене будут обслуживаться www.example.com виртуальным хостом. Подстановочные знаки * и ? могут использоваться для сопоставления имен. Конечно, вы не можете просто придумать имена и поместить их в ServerName или ServerAlias . Сначала вы должны правильно настроить DNS-сервер для сопоставления этих имен с IP-адресом, связанным с вашим сервером.

Виртуальные хосты на основе имен для наиболее подходящего набора <virtualhost> s обрабатываются в порядке их появления в конфигурации. Используется первое совпадение ServerName или без какого-либо другого приоритета для подстановочных знаков (и для ServerName по сравнению с ServerAlias). ServerAlias

Полный список имен в VirtualHost директиве обрабатывается так же, как (не подстановочный знак) ServerAlias .

Наконец, вы можете точно настроить конфигурацию виртуальных хостов, разместив другие директивы внутри контейнеров <VirtualHost> . Большинство директив можно поместить в эти контейнеры, и тогда они изменят конфигурацию только соответствующего виртуального хоста. Чтобы узнать, разрешена ли конкретная директива, проверьте контекст директивы. Директивы конфигурации, установленные в контексте основного сервера (вне любого <VirtualHost> контейнера), будут использоваться только в том случае, если они не переопределены настройками виртуального хоста.



 <         > 

Пункты:     28      29    30    31    32    33  

Рейтинг@Mail.ru