Файлы конфигурации
В этом документе описаны файлы, используемые для настройки Apache HTTP Server.
Основные файлы конфигурации
| Связанные модули | Связанные директивы |
|---|---|
Настройка Apache HTTP Server выполняется путем размещения директив в текстовых файлах конфигурации. Главный файл конфигурации обычно называется httpd.conf. Расположение этого файла задается во время компиляции, но может быть изменено с помощью флага командной строки -f. Кроме того, другие файлы конфигурации можно добавить с помощью директивы Include; для включения множества файлов конфигурации можно использовать подстановочные знаки. Любую директиву можно разместить в любом из этих файлов конфигурации. Изменения в основных файлах конфигурации распознаются httpd только при его запуске или перезапуске.
Сервер также считывает файл, содержащий типы MIME документов; имя файла задается директивой TypesConfig, а по умолчанию используется mime.types.
Синтаксис файлов конфигурации
Файлы конфигурации httpd содержат по одной директиве в строке. Обратную косую черту "\" можно использовать в качестве последнего символа строки, чтобы указать, что директива продолжается на следующей строке. Между обратной косой чертой и концом строки не должно быть других символов или пробелов.
Аргументы директив разделяются пробелами. Если аргумент содержит пробелы, его необходимо заключить в кавычки.
Директивы в файлах конфигурации нечувствительны к регистру, однако аргументы директив часто чувствительны к регистру. Строки, начинающиеся с символа решетки "#", считаются комментариями и игнорируются. Комментарии нельзя размещать в той же строке, что и директиву конфигурации. Пробелы перед директивой игнорируются, поэтому для удобства чтения директивы можно снабжать отступами. Пустые строки также игнорируются.
Значения переменных, заданных с помощью Define или переменных окружения оболочки, можно использовать в строках файлов конфигурации, применяя синтаксис ${VAR}. Если "VAR" — имя существующей переменной, ее значение подставляется в указанное место строки файла конфигурации, после чего обработка продолжается так, как если бы этот текст был непосредственно указан в файле конфигурации. Переменные, заданные с помощью Define, имеют приоритет над переменными окружения оболочки. Если переменная "VAR" не найдена, символы ${VAR} остаются без изменений, а в журнал записывается предупреждение. Имена переменных не могут содержать символ двоеточия ":", чтобы избежать конфликтов с синтаксисом RewriteMap.
При подстановке можно использовать только переменные окружения оболочки, заданные до запуска сервера. Переменные окружения, заданные непосредственно в файле конфигурации, например с помощью SetEnv, вступают в силу слишком поздно, чтобы использовать их для подстановки в файле конфигурации.
Максимальная длина строки в обычных файлах конфигурации после подстановки переменных и объединения строк-продолжений составляет приблизительно 16 МиБ. В файлах .htaccess максимальная длина составляет 8190 символов.
Проверить файлы конфигурации на наличие синтаксических ошибок, не запуская сервер, можно с помощью apachectl configtest или параметра командной строки -t.
С помощью -DDUMP_CONFIG в mod_info можно вывести конфигурацию, разрешив все включенные файлы и переменные окружения и удалив все комментарии и несовпадающие секции <IfDefine> и <IfModule>. Однако этот вывод не отражает объединение или переопределение, которое может происходить при повторении директив.
Модули
| Связанные модули | Связанные директивы |
|---|---|
httpd — модульный сервер. Это означает, что в ядро сервера включены только самые базовые функции. Расширенные возможности доступны через модули, которые можно загрузить в httpd. По умолчанию при компиляции сервера в него включается базовый набор модулей. Если сервер скомпилирован с поддержкой динамически загружаемых модулей, их можно компилировать отдельно и добавлять в любое время с помощью директивы LoadModule. В противном случае для добавления или удаления модулей необходимо перекомпилировать httpd. Директивы конфигурации можно сделать условными в зависимости от наличия определенного модуля, поместив их в блок <IfModule>. Однако блоки <IfModule> не обязательны и в некоторых случаях могут скрыть отсутствие важного модуля.
Чтобы узнать, какие модули в данный момент скомпилированы в сервер, можно использовать параметр командной строки -l. Список динамически загруженных модулей можно посмотреть с помощью параметра командной строки -M.
Область действия директив
| Связанные модули | Связанные директивы |
|---|---|
Директивы, размещенные в основных файлах конфигурации, применяются ко всему серверу. Если необходимо изменить конфигурацию только для части сервера, директивы можно ограничить по области действия, поместив их в секции <Directory>, <DirectoryMatch>, <Files>, <FilesMatch>, <Location> и <LocationMatch>. Эти секции ограничивают действие заключенных в них директив определенными расположениями в файловой системе или URL-адресами. Их также можно вкладывать друг в друга, что позволяет выполнять очень точную настройку.
httpd может одновременно обслуживать множество разных веб-сайтов. Эта возможность называется виртуальным хостингом. Область действия директив также можно ограничить, разместив их внутри секций <VirtualHost>, чтобы они применялись только к запросам для определенного веб-сайта.
Хотя большинство директив можно размещать в любой из этих секций, некоторые директивы не имеют смысла в определенных контекстах. Например, директивы, управляющие созданием процессов, можно размещать только в контексте главного сервера. Чтобы узнать, в каких секциях можно размещать конкретные директивы, проверьте их контекст. Подробнее о том, как работают секции Directory, Location и Files, можно узнать в соответствующем разделе.
Файлы .htaccess
| Связанные модули | Связанные директивы |
|---|---|
httpd позволяет децентрализованно управлять конфигурацией с помощью специальных файлов, размещаемых в дереве веб-каталогов. Обычно эти файлы называются .htaccess, но директива AccessFileName позволяет задать любое имя. Директивы, размещенные в файлах .htaccess, применяются к каталогу, в котором находится файл, и ко всем его подкаталогам. Файлы .htaccess имеют тот же синтаксис, что и основные файлы конфигурации. Поскольку файлы .htaccess считываются при каждом запросе, внесенные в них изменения вступают в силу немедленно.
Чтобы узнать, какие директивы можно размещать в файлах .htaccess, проверьте контекст директивы. Администратор сервера дополнительно управляет тем, какие директивы разрешено размещать в файлах .htaccess, задавая директиву AllowOverride в основных файлах конфигурации.
Дополнительные сведения о файлах .htaccess см. в руководстве по .htaccess.
© 2018 The Apache Software Foundation
Licensed under the Apache License, Version 2.0.
https://httpd.apache.org/docs/2.4/en/configuring.html