В какой последовательности апач обрабатывет свои конфигурационные секции.
2 Jul 2008, 07:03, apache
Начнём без долгих прелюдий. Источник - Configuration Sections из документации апача и его исходники, т.к. в документации не отражены разные тонкости.
Прикаждом запросе конфигурационные секции апача применяются так: сначала сливаются (соединяются, merge)
директивы из конфигурации сервера (httpd.conf) и директивы из конфигурации виртуального хоста (в соответствующеё секции <VirtualHost>
), и объединённая конфигурация (merged configuration) исполняется. Затем соединяются директивы из конфигурационных секций типа Directory
, Files
, файлов .htaccess, и полученная объединённая конфигурация исполняется.
Допустим, что апач обрабатывает запрос http://servername/a/b/index.html
, в результате которого будет выдан файл
/www/servername/a/b/index.html
. Вот итоговая последовательность применения конфигурационных секций:
Соединяются конфигурации
- httpd.conf
<VirtualHost>
</VirtualHost>
Выполняется соединённая конфигурация
Соединяются конфигурации
<Directory /www/servername/>
…</Directory>
<VirtualHost>
<Directory /www/servername/>
…</Directory>
</VirtualHost>
- /www/servername/.htaccess
<Directory /www/servername/a/>
…</Directory>
<VirtualHost>
<Directory /www/servername/a/>
…</Directory>
</VirtualHost>
- /www/servername/a/.htaccess
<Directory /www/servername/a/b/>
…</Directory>
<VirtualHost>
<Directory /www/servername/a/b/>
…</Directory>
</VirtualHost>
-
/www/servername/a/b/.htaccess
<Directory ~ | DirectoryMatch ^/www/servername/>
…</DirectoryMatch>
<VirtualHost>
<Directory ~ | DirectoryMatch ^/www/servername/>
…</DirectoryMatch>
</VirtualHost>
<Directory ~ | DirectoryMatch ^/www/servername/a/>
…</DirectoryMatch>
<VirtualHost>
<Directory ~ | DirectoryMatch ^/www/servername/a/>
…</DirectoryMatch>
</VirtualHost>
<Directory ~ | DirectoryMatch ^/www/servername/a/b/>
…</DirectoryMatch>
-
<VirtualHost>
<Directory ~ | DirectoryMatch ^/www/servername/a/b/>
…</DirectoryMatch>
</VirtualHost>
<Files | Files ~ index.html>
…</Files>
в порядке как они записаны в конфиге-
<VirtualHost>
<Files | Files ~ index.html>
…</Files>
</VirtualHost>
в порядке как они записаны в конфиге <Location | Location ~ >
…</Location>
в порядке как они записаны в конфиге<VirtualHost>
<Location | Location ~ >
…</Location>
</VirtualHost>
в порядке как они записаны в конфиге
Выполняется соединённая конфигурация