MyTetra Share
Делитесь знаниями!
Apache2 Поддержка виртуального хоста на основе имени
Время создания: 25.12.2020 23:29
Автор: alensav
Текстовые метки: Поддержка виртуального хоста на основе имени apache2 server
Раздел: MyTetra - Ubuntu_Command
Запись: alensav/MyTetra2/main/base/1608928152q8tr1s0yag/text.html на raw.githubusercontent.com

М одули | Директивы | FAQ | Глоссарий | Карта сайта

HTTP-сервер Apache версии 2.4

A pache > HTTP-сервер > Документация > Версия 2.4 > Виртуальные хосты

Поддержка виртуального хоста на основе имени

Доступные языки:  de  |  en  |  fr  |  ja  |  ко  |  tr 

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

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

Смотрите также

  • Поддержка виртуального хоста на основе IP
  • Углубленное обсуждение сопоставления виртуальных хостов
  • Динамически настраиваемый массовый виртуальный хостинг
  • Примеры виртуального хоста для общих настроек
  • Комментарии

Сравнение виртуальных хостов на основе имен и 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), полученное из имени хоста системы. Это неявно установленное имя сервера может привести к нелогичному сопоставлению виртуальных хостов и не рекомендуется.

Vhost на основе имени по умолчанию для комбинации IP и порта

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

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

Связанные модули

Связанные директивы

  • core
  • DocumentRoot
  • ServerAlias
  • ServerName
  • <VirtualHost>

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

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

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

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

Наследование ServerName

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

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

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

< VirtualHost *: 80 > # Этот первый в списке виртуальный хост также используется по умолчанию для *: 80 ServerName www . пример . com

пример ServerAlias . com

DocumentRoot "/ www / domain" </ VirtualHost >



< VirtualHost *: 80 > ServerName другой . пример . com

DocumentRoot "/ www / otherdomain" </ VirtualHost >

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

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

ServerAlias пример . com *. пример . com

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

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

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

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

Доступные языки:  de  |  en  |  fr  |  ja  |  ко  |  tr 

Комментарии

Примечание:
это не раздел вопросов и ответов. Комментарии, размещенные здесь, должны быть направлены на предложения по улучшению документации или сервера и могут быть удалены нашими модераторами, если они либо реализованы, либо считаются недействительными / не относящимися к теме. Вопросы о том, как управлять HTTP-сервером Apache, следует направлять либо на наш IRC-канал, #httpd, на Freenode, либо в наши
списки рассылки .

Комментарии на данный момент отключены для этой страницы.

Авторское право 2020 The Apache Software Foundation.
Под
лицензией Apache License версии 2.0 .

Модули | Директивы | FAQ | Глоссарий | Карта сайта

Так же в этом разделе:
 
MyTetra Share v.0.64
Яндекс индекс цитирования