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


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

Раздел 10. Модули Апача

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210      211      212    213  

 <         > 
  RU            EN  

Пункт 211. Модуль Apache mod_vhost_alias

Этот модуль создает динамически настраиваемые виртуальные хосты, позволяя Host: использовать IP-адрес и/или заголовок HTTP-запроса как часть имени пути, чтобы определить, какие файлы обслуживать. Это позволяет легко использовать огромное количество виртуальных хостов с похожими конфигурациями.

Примечание

Если mod_alias или mod_userdir используются для преобразования URI в имена файлов, они переопределяют директивы, mod_vhost_alias описанные ниже. Например, следующая конфигурация будет отображаться /cgi-bin/script.pl во /usr/local/apache2/cgi-bin/script.pl всех случаях:

 ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"
VirtualScriptAlias "/никогда/найден/%0/cgi-bin/" 

Интерполяция имени каталога

Все директивы в этом модуле интерполируют строку в путь. Интерполированная строка (далее именуемая «имя») может быть либо именем сервера ( UseCanonicalName подробности о том, как это определяется, см. в директиве), либо IP-адресом виртуального хоста на сервере в точечно-квадратном формате. Интерполяцией управляют спецификаторы, вдохновленные которыми, printf имеют несколько форматов:

%% вставить %
%p вставьте номер порта виртуального хоста
%N.M вставить (часть) имя

N и M используются для указания подстрок имени. N выбирает из компонентов имени, разделенных точками, и M выбирает символы внутри того, что N было выбрано. M является необязательным и по умолчанию равен нулю, если он отсутствует; точка должна присутствовать тогда и только тогда, когда M она присутствует. Толкование следующее:

0 полное имя
1 первая часть
2 Вторая часть
-1 последняя часть
-2 предпоследняя часть
2+ вторая и все последующие части
-2+ предпоследняя и все предыдущие части
1+ и -1+ такой же как 0

Если N или M больше, чем количество доступных частей, интерполируется одно подчеркивание.

Примеры

Для простых виртуальных хостов на основе имен вы можете использовать следующие директивы в файле конфигурации вашего сервера:

 UseCanonicalName Выкл.
VirtualDocumentRoot "/usr/local/apache/vhosts/%0" 

Запрос на http://www.example.com/directory/file.html будет удовлетворен файлом /usr/local/apache/vhosts/www.example.com/directory/file.html .

Для очень большого количества виртуальных хостов рекомендуется расположить файлы так, чтобы уменьшить размер каталога vhosts . Для этого вы можете использовать следующее в вашем файле конфигурации:

 UseCanonicalName Выкл.
VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2" 

Запрос на http://www.domain.example.com/directory/file.html будет удовлетворен файлом /usr/local/apache/vhosts/example.com/d/o/m/domain/directory/file.html .

Более равномерного распространения файлов можно добиться путем хэширования с конца имени, например:

 VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.-1/%2.-2/%2.-3/%2" 

Пример запроса будет исходить от /usr/local/apache/vhosts/example.com/n/i/a/domain/directory/file.html .

В качестве альтернативы вы можете использовать:

 VirtualDocumentRoot "/usr/local/apache/vhosts/%3+/%2.1/%2.2/%2.3/%2.4+" 

Пример запроса будет исходить от /usr/local/apache/vhosts/example.com/d/o/m/ain/directory/file.html .

Очень частым запросом пользователей является возможность указать несколько доменов на несколько корней документов, не беспокоясь о длине или количестве запрашиваемых частей имени хоста. Если запрошенное имя хоста sub.www.domain.example.com вместо просто www.domain.example.com , то использование %3+ приведет к тому, что корень документа будет /usr/local/apache/vhosts/domain.example.com/... вместо предполагаемого example.com каталога. В таких случаях может быть полезно использовать комбинацию %-2.0.%-1.0 , которая всегда будет давать доменное имя и tld, например, example.com независимо от количества поддоменов, добавленных к имени хоста. Таким образом, можно сделать конфигурацию, которая будет направлять все поддомены первого, второго или третьего уровня в один и тот же каталог:

 VirtualDocumentRoot "/usr/local/apache/vhosts/%-2.0.%-1.0" 

В приведенном выше примере оба, www.example.com а также www.sub.example.com или example.com будут указывать на /usr/local/apache/vhosts/example.com .

Для виртуального хостинга на основе IP вы можете использовать в файле конфигурации следующее:

 UseCanonicalName DNS
VirtualDocumentRootIP "/usr/local/apache/vhosts/%1/%2/%3/%4/docs"
VirtualScriptAliasIP "/usr/local/apache/vhosts/%1/%2/%3/%4/cgi-bin" 

Запрос http://www.domain.example.com/directory/file.html был бы удовлетворен файлом /usr/local/apache/vhosts/10/20/30/40/docs/directory/file.html , если бы IP-адрес www.domain.example.com был 10.20.30.40. Запрос на http://www.domain.example.com/cgi-bin/script.pl будет удовлетворен выполнением программы /usr/local/apache/vhosts/10/20/30/40/cgi-bin/script.pl .

Если вы хотите включить . символ в VirtualDocumentRoot директиву, но он конфликтует с директивой % , вы можете обойти проблему следующим образом:

 VirtualDocumentRoot "/usr/local/apache/vhosts/%2.0.%3.0" 

Запрос на http://www.domain.example.com/directory/file.html будет удовлетворен файлом /usr/local/apache/vhosts/domain.example/directory/file.html .

Директивы и полезны в сочетании с этим модулем LogFormat . %V %A



Директива VirtualDocumentRoot

Описание:Динамически настроить расположение корня документа для данного виртуального хоста
Синтаксис: VirtualDocumentRoot interpolated-directory|none
По умолчанию: VirtualDocumentRoot none
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_vhost_alias

Директива VirtualDocumentRoot позволяет вам определить, где Apache HTTP Server найдет ваши документы, на основе значения имени сервера. Результат расширения interpolated-directory используется как корень дерева документов аналогично DocumentRoot аргументу директивы. Если interpolated-directory есть, none то VirtualDocumentRoot он выключен. Эту директиву нельзя использовать в том же контексте, что и VirtualDocumentRootIP .

Примечание

VirtualDocumentRoot переопределит любые DocumentRoot директивы, которые вы могли поместить в тот же контекст или дочерние контексты. Помещение a VirtualDocumentRoot в глобальную область сервера будет эффективно переопределять DocumentRoot директивы в любых виртуальных хостах, определенных позже, если только вы не установите VirtualDocumentRoot для None каждого виртуального хоста.

Директива VirtualDocumentRootIP

Описание:Динамически настроить расположение корня документа для данного виртуального хоста
Синтаксис: VirtualDocumentRootIP interpolated-directory|none
По умолчанию: VirtualDocumentRootIP none
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_vhost_alias

Директива VirtualDocumentRootIP аналогична VirtualDocumentRoot директиве, за исключением того, что она использует IP-адрес серверной части соединения для интерполяции каталогов вместо имени сервера.



Директива VirtualScriptAlias

Описание:Динамически настроить расположение каталога CGI для данного виртуального хоста.
Синтаксис: VirtualScriptAlias interpolated-directory|none
По умолчанию: VirtualScriptAlias none
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_vhost_alias

Директива VirtualScriptAlias позволяет вам определить, где Apache httpd будет находить CGI-скрипты аналогично тому, как это VirtualDocumentRoot делается для других документов. Он соответствует запросам на начало URI /cgi-bin/ , как и ScriptAlias /cgi-bin/ должно быть.



Директива VirtualScriptAliasIP

Описание:Динамически настроить расположение каталога CGI для данного виртуального хоста.
Синтаксис: VirtualScriptAliasIP interpolated-directory|none
По умолчанию: VirtualScriptAliasIP none
Контекст:конфигурация сервера, виртуальный хост
Положение дел:Расширение
Модуль:mod_vhost_alias

Директива VirtualScriptAliasIP аналогична VirtualScriptAlias директиве, за исключением того, что она использует IP-адрес серверной части соединения для интерполяции каталогов вместо имени сервера.



 <         > 

Пункты:   85    86    88    89    90    91    92    93    94    95    96    97    98    99    100    101    102    103    104    105    106    107    108    109    110    111    112    113    114    115    116    117    118    119    120    121    122    123    124    125    126    127    128    129    130    131    132    133    134    135    136    137    138    139    140    141    142    143    144    145    146    147    148    149    150    151    152    153    154    155    156    157    158    159    160    161    163    164    165    166    167    168    170    171    172    173    174    175    176    177    178    179    180    181    182    183    184    185    186    187    188    189    190    191    192    193    194    195    196    197    198    199    200    201    203    204    205    206    207    208    209    210      211      212    213  

Рейтинг@Mail.ru