- •Запуск и остановка Apache
- •Директивы конфигурации web-сервера Apache. Контексты использования директив конфигурации
- •Контейнерные директивы Apache
- •Условная конфигурация
- •Использование динамических модулей
- •Ограничительные директивы Apache
- •Директива Options
- •Основные директивы конфигурации Apache
- •Директивы производительности Apache
- •Управление процессами
- •Управление потоками
- •Директивы для управления процессами и потоками
- •Постоянные соединения
- •Псевдонимы
- •Конфигурация типа содержимого Языки файлов
- •Типы файлов
- •Обработчики
- •Наборы символов
- •Активизация механизма cgi
- •Активизация механизма ssi
- •Переадресация
- •Аутентификация
- •Алгоритм аутентификации:
- •Управление доступом
- •Виртуальный хостинг
- •Обработка ошибок
- •Протокол ssl
Контейнерные директивы Apache
<Limit> - Ограничивает область действия внутренних директив указанными методами HTTP. Используется в основном для управления доступом и аутентификации.
<Limit GET POST OPTIONS>
Order deny,allow
Deny from all
Allow from 127.0.0.1 192.168
</Limit>
<LimitExcept> - Применяется по отношению к методам HTTР, не указанным в списке методов, в том числе к расширенным и нестандартным методам, которые не описаны в протоколе НТТР.
<LimitExcept GET>
Require valid-user
</LimitExcept>
<Directory> - Директивы внутри контейнера применяются только по отношению к данному каталогу и его подкаталогам.
<Directory /home/www/*>
AllowOverride All
</Directory>
<DirectoryMatch> – выполняет те же действия, что и <Directory>, но вместо имени каталога она принимает регулярное выражение. Например, директивы, находящиеся внутри контейнера
<DirectoryMatch ″^/www/dir[1-3]″>
…
</DirectoryMatch>
будут выполняться для каталогов с именами /www/dir1, /www/dir2 и /www/dir3.
<Files> - Аналогично <Directory>, но устанавливает соответствие для файлов. Разрешена внутри <Directory> и <Location>, что позволяет ограничить часть файловой системы, с которой работает директива.
<Directory /home/www/gallery>
<Files *.gif>
SetHandler /cgi-bin/process-image.cgi
</Files>
</Directory>
<FilesMatch> – выполняет те же действия, что и <Files>, но вместо имени файла она принимает регулярное выражение. Например, директивы, находящиеся внутри контейнера
<FilesMatch ″\.(doc|txt$)″>
…
</FilesMatch>
будут выполняться для файлов с расширениями txt и doc.
<Location> - Аналогично <Directory>, но применяется не к физической области хранения файлов, а к указателям URL. Директивы, разрешенные в <Directory>, действуют и в <Location>, хотя некоторые (например Options FollowSymLinks) логически бессмысленны и игнорируются.
<Location /server-info>
SetHandler server-info
</Location>
<LocationMatch> – выполняет те же действия, что и <Location>, но вместо URL она принимает регулярное выражение.
<VirtualHost> - Позволяет описывать дополнительные виртуальные хосты. У каждого из них должны быть имя, IP-адрес, журналы ошибок и доступа.
<VirtualHost 192.168.1.2>
ServerName www.beta.com
ServerAdmin admin@beta.com
CustomLog /logs/beta_access_log common
ErrorLog /logs/beta_error_log
DocumentRoot /home/www/beta
</VirtualHost>
Правила при использовании контейнеров:
контейнер <VirtualHost> не может находиться внутри любого другого контейнера;
контейнер <Limit> с самым узким контекстом не может содержать вложенных контейнеров;
контейнер <Files> может содержать только контейнер <Limit>;
контейнеры <Directory> и <Location> нельзя смешивать, то есть использовать один внутри другого.
Контейнер с более узкой областью действия перекрывает контейнер с более широко областью действия.
Условная конфигурация
В конфигурационных файлах Apache могут присутствовать разделы, используемые только при определенных условиях. При ограничении разделов конфигурации директивами <IfDefine> и <IfModule> Apache будет игнорировать или подключать некоторые из них.
Контейнер <IfDefine> позволяет создавать конфигурацию по условию.
<IfDefine HAVE_PERL>
AddModule mod_perl.c
</IfDefine>
HAVE_PERL - определитель, который передается Apache при запуске с ключом -D.
Символ ! перед определителем означает, что директиву нужно выполнить тогда, окгда определителя не существует.
Контейнер <IfModule> используется в том случае, когда есть директивы конфигурации модуля, который может не присутствовать в установленной конфигурации сервера Apache.
<IfModule mod_perl.c>
Alias /perl/ /www/perl/
</IfModule>
Если нужна конструкция условия, действие которой прямо противоположно предыдущей, перед именем модуля ставится символ !.
