Конфигурация виртуальных доменов
Конфигурация виртуальных доменов
Существуют два способа организации работы с виртуальными доменами. Один из них состоит в том, что, в зависимости от имени, указанного в запросе, в качестве корневого каталога документов выбираются различные каталоги. Второй способ позволяет устанавливать для каждого виртуального домена разные наборы опций.
Использование VirtualDocumentRoot
VirtualDocumentRoot — одна из основных директив, используемых для настройки виртуальных доменов. Эта директива позволяет указать имя каталога, которое будет выполнять роль корневого каталога документов при указании в составе запроса определенного имени. В качестве значения VirtualDocumentRoot указывается имя каталога, которое может содержать различные переменные. (Назначение этих переменных описано в табл. 20.1.)
Таблица 20.1. Переменные, используемые для создания имен каталогов
Переменная Описание %% Символ % в имени каталога %p Номер порта, используемый сервером %N.M Часть имени, отделенная от других частей точками. N — это число, ссылающееся на компонент имени. 0 означает все доменное имя, 1 — первый компонент, 2 — второй компонент и т.д. Значение N также может быть отрицательным: — 1 определяет последний компонент имени, — предпоследний компонент и т.д. M принимает такие же значения, как и N, но ссылается не на компонент имени, а на символ в составе компонента. Если вы хотите использовать весь компонент имени, точку и M можно не указывать.Рассмотрим в качестве примера следующую запись:
VirtualDocumentRoot /home/httpd/%0
Она сообщает серверу о том, что он должен использовать подкаталог каталога /home/httpd, имя которого соответствует полному имени сервера, указанному в составе запроса. Например, если в запросе задан URL http://www.threeroomco.com/index.html, сервер будет искать файл /home/httpd/www.threeroomco.com/index.html. Такой способ очень удобен, но если вам необходимо поддерживать большое количество Web-узлов, то придется создавать много подкаталогов с достаточно длинными именами (в данном примере все подкаталоги должны присутствовать в каталоге /home/httpd). При необходимости вы можете использовать в качестве имени каталога часть доменного имени. Пример подобного подхода иллюстрирует приведенная ниже запись.
VirtualDocumentRoot /home/httpd/%-1/%-2
Если в конфигурационном файле содержится такое выражение, то, получив запрос, в котором указан URL http://www.threeroomco.com/index.html, Apache вернет клиенту файл /home/httpd/com/threeroomco/index.html (если он имеется на сервере). Если вы хотите использовать в имени каталога лишь один символ из доменного имени, вам надо включить в состав конфигурационного файла запись наподобие следующей:
VirtualDocumentRoot /home/httpd/%-2.1/%0
Теперь при получении URL http://www.threeroomco.com/index.html Apache вернет клиенту файл /home/httpd/t/www.threeroomco.com/index.html. Переменная %-2.1 определяет первый (.1) символ в составе имени домена (-2), предшествующего имени домена верхнего уровня.
Независимо от значения директивы VirtualDocumentRoot, вам надо задать значение Off для директивы UseCanonicalName.
UseCanonicalName Off
Если директива UseCanonicalName будет иметь значение On, устанавливаемое по умолчанию при инсталляции сервера, Apache будет использовать для обработки относительных ссылок доменное имя компьютера, на котором он выполняется. Например, если в документе index.html содержится ссылка на Web-страницу products.html, Apache будет стараться извлечь ее, основываясь на своем каноническом имени. При наличии виртуальных доменов такое поведение недопустимо. Если задать значение Off директивы UseCanonicalName, то для обработки относительных ссылок Apache будет применять имя, соответствующее виртуальному домену.
Использование <VirtualHost>
Альтернативный подход к созданию виртуальных доменов предполагает непосредственное описание каждого из них. Для этого в конфигурационном файле Apache предусмотрены две специальные директивы.
• NameVirtualHost. Данная директива указывается в главном конфигурационном файле Apache и информирует сервер о том, что вы собираетесь использовать виртуальные узлы. В качестве значения этой директивы чаще всего указывается символ *; при этом необходимо определять виртуальные домены для поддержки всех типов обращения к серверу. Кроме того, значением опции NameVirtualHost может быть IP-адрес, связанный с сетевым интерфейсом; в этом случае конфигурация основного сервера применяется ко всем запросам, за исключением запросов, переданных через этот интерфейс, и запросов, соответствующих определению виртуального узла.
• <VirtualHost>. Данная директива указывает на начало блока, содержащего определение виртуального домена. Для этой директивы задаются те же значения, что и для директивы NameVirtualHost. Признаком окончания блока служит директива </VirtualHost>. В состав блока включаются директивы, определяющие конфигурацию виртуального домена; здесь вы можете указать многие из тех директив, которые используются для настройки сервера, не поддерживающего виртуальные узлы.
В составе блока, сформированного с помощью <VirtualHost>, обычно указываются директивы ServerName (она определяет имя, которому соответствует данный блок) и DocumentRoot. При необходимости вы также можете настроить другие характеристики сервера, например разрешить выполнение CGI-сценариев. В качестве примера рассмотрим следующий фрагмент конфигурационного файла, который описывает два виртуальных Web-узла:
NameVirtualHost *
<VirtualHost *>
ServerName www.threeroomco.com
DocumentRoot /home/httpd/threeroomco/html
ScriptAlias /cgi-bin/ "/home/httpd/threeroomco/cgi-bin/"
</VirtualHost>
<VirtualHost *>
ServerName www.pangaea.edu
DocumentRoot /home/httpd/pangaea-u/html
</VirtualHost>
Если сервер настроен подобным образом, то при обращении к нему посредством имени www.threeroomco.com он будет предоставлять клиенту статические файлы, которые находятся в каталоге /home/httpd/threeroomco/html, или запускать на выполнение сценарии, содержащиеся в каталоге /home/httpd/threeroomco/cgi-bin. Если же в запросе указано имя www.pangaea.edu, то статические файлы будут извлекаться из каталога /home/httpd/pangaea-u/html, а выполнение CGI-сценариев будет запрещено.
В отличие от VirtualDocumentRoot, использование директивы <VirtualHost> позволяет настроить каждый виртуальный узел и размещать документы в произвольных позициях файловой системы. С другой стороны, VirtualDocumentRoot предельно упрощает добавление новых доменов; для этого достаточно создать новый каталог. В большинстве случаев администраторы предпочитают использовать директиву <VirtualHost>, однако вы можете выбрать любой из этих способов, исходя из особенностей поставленной перед вами задачи.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Список всех доступных доменов в локальной сети
Список всех доступных доменов в локальной сети В листинге 11.1 приведен JScript-сценарий ListDomains.js, в котором создается список всех доменов, доступных в сети (рис. 11.1) Рис. 11.1. Список всех имеющихся в сети доменовВ рассматриваемом сценарии производятся следующие действия.
Организация виртуальных доменов
Организация виртуальных доменов Ранее в данной главе рассматривалось применение сервера Apache для работы с Web- страницами, принадлежащими одному Web-узлу. Возможно ли разместить на одном компьютере несколько Web-узлов? Положительный ответ на данный вопрос очевиден, так как
Использование виртуальных доменов
Использование виртуальных доменов Наличие виртуальных доменов позволяет Web-серверу по-разному обрабатывать запросы, в зависимости от имен, указанных в них. (Чтобы к Web-серверу можно было обращаться по разным именам, необходимо создать несколько записей в
12.8 Локальные и глобальные серверы имен доменов
12.8 Локальные и глобальные серверы имен доменов В изолированной сети TCP/IP можно применять любое бесплатное программное обеспечение DNS для создания первичной базы данных трансляции имен и репликации этой базы данных в определенные точки сети. Все пользовательские запросы
B.4 Система именования доменов
B.4 Система именования доменов Служба регистрации содержит информацию о Domain Name System (DNS) в своем архиве пересылки файлов, доступном при выборе на домашней странице этой организации FTP Archive с последующим выбором каталога domain или
Права и уровни доменов
Права и уровни доменов Доменов в Интернете очень много. Особое значение имеют домены первого уровня, среди которых принято особо выделять домены общего назначения (или, как их иногда называли раньше, домены общего пользования) и национальные. Например, к доменам общего
Тысячи доменов
Тысячи доменов Сколько имен внутри домена первого уровня может находиться под контролем одного администратора? Пять? Десять? Пределы определяются только правилами регистрации, действующими внутри домена. Например, в некоторых национальных доменах на число имен,
Глава 9 Колесо Сансары, или Жизнь и смерть доменов
Глава 9 Колесо Сансары, или Жизнь и смерть доменов У всякого домена второго уровня есть жизненный цикл: домен появляется в системе DNS, под этим доменом размещаются ресурсы, используемые читателями сайтов и посетителями сервисов; потом интернет-ресурс, связанный с доменом,
Выражения в значениях по умолчанию для доменов
Выражения в значениях по умолчанию для доменов Yaffil позволяет использовать сложные выражения для значений по умолчанию в доменах:CREATE DOMAIN NEW_DOMAIN AS INTEGER DEFAULT (GEN_ID(NEW_GENERATOR, 1))Подобная возможность позволяет не писать дополнительные триггера для выполнения схожих
Список доменов приложения процесса
Список доменов приложения процесса Для примера программного взаимодействия с доменами приложений .NET предположим, что у нас есть новое консольное приложение C# с именем AppDomainManipulator, в рамках которого определяется статический метод PrintAllAssembliesInAppDomain(). Этот вспомогательный
Программное создание новых доменов приложения
Программное создание новых доменов приложения Напомним, что один процесс может содержать множество доменов приложения, И хотя вам в программном коде вряд ли понадобится вручную создавать домены приложения, вы имеете возможность сделать это с помощью статического
Программная выгрузка доменов приложения
Программная выгрузка доменов приложения Важно понимать, что среда CLR не позволяет выгружать отдельные компоновочные блоки .NET. Однако, используя метод AppDomain.Unload(), вы можете избирательно выгрузить домен приложения из объемлющего процесса. При этом домен приложения
Взаимосвязь процессов, доменов приложений, контекстов и потоков
Взаимосвязь процессов, доменов приложений, контекстов и потоков В предыдущей главе обсуждалось понятие потока, который был определен, как путь исполнения в рамках выполняемого приложения. И хотя многие приложения .NET имеют только один поток и, тем не менее, оказываются
Изменение определения столбцов и доменов
Изменение определения столбцов и доменов В обоих диалектах вы можете изменять тип данных доменов и столбцов в таблицах. Если вы выполняете миграцию базы данных из другой СУБД, это может быть полезным. Существуют некоторые ограничения при изменении типа данных.* Firebird не
Использование доменов в определении столбца
Использование доменов в определении столбца Пример В некоторой базе данных есть домен SYSUSER, размером до 31 символа, имеющий значение по умолчанию, получаемое из контекстной переменной CURRENT_USER:CREATE DOMAIN SYSUSER AS VARCHAR(31) DEFAULT CURRENT_USER;Объявляемая таблица содержит столбец UPDATED_BY,
Мостовая конфигурация (конфигурация hub-and-spoke)
Мостовая конфигурация (конфигурация hub-and-spoke) В мостовой конфигурации каждый головной УЦ устанавливает отношения кросс-сертификации с единственным центральным УЦ, в чьи функции входит обеспечение таких взаимных связей [101]. Центральный УЦ иногда называют "втулкой" (hub),