Контейнеры. Директивы настройки Apache находятся в файле конфигурации httpd.conf
Директивы настройки Apache находятся в файле конфигурации httpd.conf
в одном из двух видов контекста:
r в контексте конфигурации сервера — глобальные настройки;
r в контексте контейнера.
Область действия директив, указанных в контексте контейнера, ограничива- ется объектом, связанным с данным контейнером. Например, для обеспече- ния возможности обращаться к каталогу /usr/share/doc, используя псевдоним doc (см. пример 28.3), можно создать контейнер, как в примере 28.4.
Пример 28.4. Контейнер Directory |
<Directory /usr/share/doc>
Options Indexes FollowSymLinks Order deny,allow
Deny from all
Allow from 127.0.0.1
</Directory>
Данный контейнер устанавливает права доступа к каталогу /usr/share/doc, по- лучить содержимое которого можно, обратившись по URL http://localhost/doc, т. к. имеется псевдоним doc, указывающий на этот каталог.
Опция Indexes позволяет Apache автоматически выводить список файлов и подкаталогов, если в данном каталоге отсутствует файл index.html. Опция FollowSymLinks позволяет следовать символическим ссылкам в этом каталоге.
Директива Order предназначена для указания интерпретации следующих да- лее директив: Deny, устанавливающей запрет доступа к ресурсу, и Allow, раз- решающей доступ. В этом примере к каталогу /usr/share/doc разрешен доступ посредством Apache только для клиентов с локального узла.
Контейнеры, используемые наиболее часто:
r <Directory> — применяются для указания директив, область действия которых ограничена заданным каталогом (при задании имени каталога с помощью регулярного выражения перед ним следует указывать знак ~);
r <DirectoryMatch> — то же, что и предыдущий контейнер, но исходно предназначенный для указания имен каталогов с помощью регулярных выражений (знак ~ указывать не нужно);
r <Files> — для директив, связанных с заданными файлами (при задании имени файла с помощью регулярного выражения перед ним следует ука- зывать знак ~);
r <FilesMatch> — для директив, связанных с заданными файлами, указы- ваемыми с помощью регулярных выражений (знак ~ указывать не нужно);
r <Location> — для указания директив, связанных с заданными URL;
r <LocationMatch> — указания настроек для URL, заданных регулярными выражениями;
r <VirtualHost> — особый вид контейнера, связанный с виртуальными уз- лами, т. е. с Web-сайтами, обслуживаемыми данным сервером, но имею- щими отличные доменные имена или IP-адреса;
r <Limit> — контейнер, ограничивающий возможности использования за- данных команд протокола HTTP (например, GET или POST);
r <LimitExcept> — контейнер, выполняющий обратное по смыслу действие по сравнению с предыдущим;
r <IfDefine> — контейнер, содержимое которого действительно только при указании некоторой дополнительной функциональности Apache (напри- мер, подключения SSL) с помощью опции -D команды httpd;
r <IfModule> — контейнер, содержимое которого действительно только при подключении указанного модуля.
Некоторые виды контейнеров допускают вложенность. Так, например, для обеспечения возможности проводить мониторинг активности Apache можно воспользоваться модулем mod_status.c (пример 28.5).
Пример 28.5. Модуль mod_status.c |
<IfModule mod_status.c>
<Location /server-status> SetHandler server-status Order deny,allow
Deny from all
allow from 127.0.0.1
</Location>
</IfModule>
Контейнер <IfModule> здесь содержит контейнер <Location>, который по- зволяет в случае наличия модуля mod_status.c получить с локального узла информацию о состоянии сервера, обратившись по адресу http://localhost/ server-status.
Директива SetHandler, использованная в этом примере, задает обработчик для всех файлов, предоставляемых сервером. В данном примере именно эта директива позволяет получить статус сервера с помощью модуля mod_status.c.
Среди программ пакета httpd обычно имеется удобная утилита a2enmod, ав- томатизирующая подключение модулей Apache.
Дата добавления: 2015-06-12; просмотров: 859;