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  

Пункт 163. Модуль Apache mod_macro

Предоставляет макросы в файлах конфигурации времени выполнения Apache httpd, чтобы упростить процесс создания множества похожих блоков конфигурации. Когда сервер запускается, макросы раскрываются с использованием предоставленных параметров, а результат обрабатывается вместе с остальной частью файла конфигурации.

Применение

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

Например, вы можете использовать макрос для определения <VirtualHost> блока, чтобы определить несколько похожих виртуальных хостов:

 <Макро VHost $имя $домен>
<Виртуальный хост *:80>
 имя_сервера $domain
 Псевдоним сервера www.$domain
 DocumentRoot "/var/www/vhosts/$имя"
 ErrorLog "/var/log/httpd/$name.error_log"
 CustomLog "/var/log/httpd/$name.access_log" в сочетании
</ виртуальный хост>
</Макрос> 

Имена макросов нечувствительны к регистру, как директивы конфигурации httpd. Однако имена переменных чувствительны к регистру.

Затем вы должны несколько раз вызвать этот макрос для создания виртуальных хостов:

 Используйте пример VHost example.com
Используйте VHost myhost hostname.org
Используйте виртуальный хост apache apache.org
UndefMacro VHost 

Во время запуска сервера каждый из этих Use вызовов будет расширен до полного виртуального хоста, как описано в <Macro> определении.

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

Более сложную версию этого примера можно увидеть ниже в разделе «Примеры».

Советы

Имена параметров должны начинаться с символа, такого как $ , % , или @ , чтобы их можно было четко идентифицировать, а также для облегчения взаимодействия с другими директивами, такими как основная Define директива. Невыполнение этого требования приведет к предупреждению. Тем не менее, вам рекомендуется хорошо знать всю конфигурацию вашего сервера, чтобы избежать повторного использования одних и тех же переменных в разных областях, что может вызвать путаницу.

Параметры с префиксом $ или % не экранируются. Префиксы параметров @ заключены в кавычки.

Избегайте использования параметра, который содержит другой параметр в качестве префикса (например, $win и $winter ), так как это может привести к путанице во время вычисления выражения. В случае такой путаницы используется максимально длинное имя параметра.

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

 <Макрокорень документа ${docroot}>
 DocumentRoot "/var/www/${docroot}/htdocs"
</Макрос> 

Примеры

Определение виртуального хоста

Обычно используется mod_macro для создания динамически генерируемых виртуальных хостов.

 ## Определите макрос VHost для повторяющихся конфигураций
<Macro VHost $host $port $dir>
 Прослушать $ порт
 <Виртуальный хост *:$port>
 имя_сервера $host
 DocumentRoot "$ каталог"
 # Публичный корень документа
 <Каталог "$dir">
 Требовать все предоставленные
 </Каталог>
 # ограничить доступ к подкаталогу интрасети.
 <Каталог "$dir/интрасеть">
 Требовать ip 10.0.0.0/8
 </Каталог>
 </ виртуальный хост>
</Макрос>
## Использование VHost с разными аргументами.
Используйте VHost www.apache.org 80 /vhosts/apache/htdocs
Используйте VHost example.org 8080 /vhosts/example/htdocs
Используйте VHost www.example.fr 1234 /vhosts/example.fr/htdocs 

Удаление определения макроса

Рекомендуется отменить определение макроса после его использования. Это позволяет избежать путаницы в сложном файле конфигурации, где могут быть конфликты имен переменных.

 <Группа каталогов макроса $dir $group>
 <Каталог "$dir">
 Требовать группу $группа
 </Каталог>
</Макрос>
Используйте DirGroup /www/apache/private private
Используйте DirGroup /www/apache/server admin
UndefМакрокаталогГруппа 


Директива <Макрос>

Описание:Определить макрос файла конфигурации
Синтаксис: <Macro name [par1 .. parN]> ... </Macro>
Контекст:конфигурация сервера, виртуальный хост, каталог
Положение дел:База
Модуль:mod_macro

Директива <Macro> управляет определением макроса в файлах конфигурации среды выполнения сервера. Первый аргумент — это имя макроса. Другие аргументы являются параметрами макроса. Хорошей практикой является использование префикса имени параметра с любым из символов ' $%@ ', а не имен макросов с такими символами.

 <Политика локального доступа к макросу>
 Требовать ip 10.2.16.0/24
</Макрос>
<Macro RestrictedAccessPolicy $ipnumbers>
 Требовать ip $ipnumbers
</Макрос> 


Директива UndefMacro

Описание:Отменить определение макроса
Синтаксис: UndefMacro name
Контекст:конфигурация сервера, виртуальный хост, каталог
Положение дел:База
Модуль:mod_macro

Директива UndefMacro отменяет определение макроса, который был определен ранее.

 UndefMacro LocalAccessPolicy
UndefMacro RestrictedAccessPolicy 

Использовать директиву

Описание:Использовать макрос
Синтаксис: Use name [value1 ... valueN]
Контекст:конфигурация сервера, виртуальный хост, каталог
Положение дел:База
Модуль:mod_macro

Директива Use управляет использованием макроса. Указанный макрос развернут. Ему должно быть присвоено то же количество аргументов, что и в определении макроса. Предоставленные значения связаны с соответствующими начальными параметрами и заменяются перед обработкой.

 Использовать локальную политику доступа
...
Используйте политику ограниченного доступа "192.54.172.0/24 192.54.148.0/24" 

с макросами, определенными выше, эквивалентно:

 Требовать ip 10.2.16.0/24
...
Требуется ip 192.54.172.0/24 192.54.148.0/24 


 <         > 

Пункты:   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