core#
Описание#
core_module - основной модуль Apache HTTP Server, который предоставляет базовые функции и возможности сервера. Он всегда активен и является неотъемлемой частью веб-сервера, реализуя ключевые механизмы его работы и предоставляя минимальный набор инструментов, необходимых для запуска и управления веб-сервером.
Основные функции core_module:
Обработка (интерпретация и выполнение) базовых директив конфигурации, предоставляющих основные функции веб-сервера, такие как определение корневой директории, настройка портов прослушивания, управление логами и т. д. (например,
ServerRoot,Listen,DocumentRoot,ErrorLog,LogLevel).Управление процессами и потоками:
реализация базовых механизмов запуска и управления процессами/потоками;
поддержка различных MPM (Multi-Processing Modules), таких как
prefork,workerиevent.
Обработка HTTP-запросов - разбор заголовков и определение методов запроса (GET, POST и т.д.).
Определение структуры сервера - управление настройками виртуальных хостов (
<VirtualHost>), контекстов (<Directory>,<Files>,<Location>), а также глобальных параметров сервера.Безопасность и ограничения доступа - реализация базовых механизмов контроля доступа через директивы, такие как
Require,AllowOverride,Options.Логирование - базовые функции логирования событий, такие как запись ошибок и запросов.
Работа с MIME-типами - поддержка базовых механизмов определения MIME-типов для файлов.
Обработка алиасов и перенаправлений - реализация базовых функций для работы с
AliasиRedirect.
Примеры конфигурации#
Примеры конфигурации, настроенной с помощью модуля core_module:
Базовая настройка для работы с HTTP/HTTPS-трафиком - сервер будет прослушивать порты
80(HTTP) и443(HTTPS):Listen 80 Listen 443Указание каталога, из которого сервер будет отдавать статические файлы:
DocumentRoot "/var/www/html"Настройка виртуального хоста для домена
example.com:# Порт, на котором будет слушать виртуальный хост <VirtualHost *:80> # Имя сервера ServerName example2.com # Альтернативное имя для сервера ServerAlias www.example2.com # Каталог, в котором находятся файлы веб-сайта DocumentRoot "/var/www/example2" # Файл, в который будут записываться сообщения об ошибках для данного виртуального хоста ErrorLog "/var/log/httpd/example2_error.log" # Файл записей о доступе к виртуальному хосту CustomLog "/var/log/httpd/example2_access.log" combined # Определение настроек для указанного каталога <Directory "/var/www/example2"> # Доступ к содержимому каталога - всем пользователям Require all granted # Отключение отображения списка файлов в каталоге, если в нем нет файла index Options -Indexes # Использование файлов .htaccess в каталоге для переопределения настроек конфигурации AllowOverride All </Directory> </VirtualHost>
Директивы#
Список директив модуля представлен в таблице ниже.
Синтаксис |
Значение по умолчанию |
Контекст |
Описание |
|---|---|---|---|
|
|
|
Определяет, какой фильтр приема соединений использовать для указанного протокола, позволяя откладывать чтение данных до тех пор, пока не будет готов полный запрос |
|
|
|
Определяет, будет ли сервер принимать запросы с дополнительной информацией в пути (PathInfo) после имени файла. |
|
|
|
Определяет имя файла (или список файлов), который веб-сервер будет использовать для поиска конфигураций на уровне каталога. Если файл с указанным именем найден, его настройки применяются к текущему каталогу и его подкаталогам |
|
|
|
Указывает кодировку символов по умолчанию, которая будет добавляться в заголовок |
|
|
|
Определяет, как сервер обрабатывает закодированные слеши ( |
|
|
|
Определяет, какие директивы могут быть переопределены в файлах |
|
|
|
Позволяет указать конкретные директивы, которые могут быть переопределены в файлах |
|
Нет |
|
Сопоставляет расширение файла с обработчиком CGI. Например, |
|
|
|
Разрешает передачу HTTP-заголовков авторизации (например, |
|
Нет |
|
Устанавливает переменные окружения для CGI-скриптов. Например, |
|
|
|
Включает генерацию заголовка |
|
|
|
Указывает каталог, в котором веб-сервер будет хранить runtime-файлы (например, PID-файлы и сокеты) |
|
|
|
Выдает предупреждения, если значение не равно |
|
Нет |
|
Определяет параметр, который можно использовать в конфигурации веб-сервера с помощью директивы |
|
Нет |
|
Ограничивает действие вложенных директив указанным каталогом и его подкаталогами. Путь к каталогу может быть абсолютным или относительным к корню сервера. Поддерживает использование wildcard-символов ( |
|
Нет |
|
Ограничивает действие вложенных директив каталогами, путь которых соответствует указанному регулярному выражению. Аналогична |
|
|
|
Указывает корневой каталог, из которого веб-сервер будет обслуживать файлы для данного сервера или виртуального хоста. Путь должен быть абсолютным |
|
Нет |
|
Используется внутри |
|
Нет |
|
Используется внутри |
|
|
|
Управляет использованием сопоставление файлов в памяти (MMAP) для чтения статических файлов. Включение ( |
|
|
|
Управляет использованием системного вызова |
|
Нет |
|
Выводит указанное сообщение об ошибке в лог-файл и завершает обработку запроса с кодом состояния |
|
Нет |
|
Определяет действие, которое сервер должен выполнить при возникновении ошибки с указанным кодом. Действие может быть текстовым сообщением, URL для перенаправления или путем к локальному файлу |
|
|
|
Указывает файл или системный лог (syslog), куда будут записываться сообщения об ошибках. Если указан путь к файлу, он может быть абсолютным или относительным к |
|
Нет |
|
Определяет формат строк лога для сообщений об ошибках. Поддерживает использование переменных и спецификаторов для настройки вывода |
|
|
|
Включает или отключает расширенный статус для модуля |
|
|
|
Управляет созданием заголовка |
|
Нет |
|
Ограничивает действие вложенных директив указанным файлом или группой файлов. Имя файла может быть полным именем, wildcard-шаблоном или регулярным выражением (с синтаксисом |
|
Нет |
|
Ограничивает действие вложенных директив файлам, имена которых соответствуют указанному регулярному выражению |
|
|
|
Управляет максимальным количеством конвейерных (pipelined) запросов, которые могут быть обработаны до принудительной отправки данных клиенту. Используется для оптимизации производительности при работе с конвейерными HTTP-запросами |
|
|
|
Устанавливает максимальный размер данных, которые могут быть накоплены в буфере перед принудительной отправкой клиенту. Используется для оптимизации производительности и управления задержкой отправки данных |
|
Нет |
|
Принудительно устанавливает MIME-тип для всех файлов в указанном контексте, независимо от их расширения или содержимого |
|
Нет |
|
Определяет каталог, в который будут сохраняться файлы gprof для дочерних процессов сервера. Используется для анализа производительности веб-сервера с помощью инструментов профилирования |
|
|
|
Управляет выполнением DNS-запросов для преобразования IP-адресов клиентов в имена хостов. |
|
|
|
Изменяет правила обработки HTTP-запросов, определяя ограничения для строки (Request Line) и заголовков запроса (Request Header Fields). Параметры позволяют настраивать уровень строгости проверки HTTP-запросов, включая поддержку устаревших методов и версий протокола (например, HTTP/0.9). Директива применяется до начала обработки запроса и должна быть настроена на глобальном уровне или в первом совпадающем виртуальном хосте |
|
Нет |
|
Содержит директивы, которые применяются только при выполнении условия, проверяемого во время обработки запроса. Условие задается в виде выражения |
|
Нет |
|
Содержит директивы, которые будут обработаны только при выполнении условия, проверяемого во время запуска сервера. Условие определяется наличием или отсутствием указанного параметра (с возможностью инверсии через |
|
Нет |
|
Содержит директивы, которые обрабатываются в зависимости от наличия или отсутствия указанной директивы. Директивы внутри блока применяются только если условие истинно; в противном случае они игнорируются |
|
Нет |
|
Содержит директивы, которые обрабатываются только при наличии (или отсутствии, если используется |
|
Нет |
|
Содержит директивы, которые обрабатываются в зависимости от наличия или отсутствия указанного модуля. Директивы внутри блока применяются только если условие истинно; в противном случае игнорируются |
|
Нет |
|
Содержит директивы, которые обрабатываются в зависимости от наличия или отсутствия указанной секции. Директивы внутри блока применяются только если условие истинно; в противном случае они игнорируются. Секция может быть любой директивой, такой как |
|
Нет |
|
Позволяет включать другие конфигурационные файлы в конфигурационные файлы сервера, что помогает организовать конфигурацию более удобно и модульно. Поддерживается использование подстановочных знаков для указания нескольких файлов |
|
Нет |
|
Позволяет включать другие конфигурационные файлы в конфигурационные файлы сервера. Работает аналогично директиве |
|
|
|
Включает постоянные HTTP-соединения. Расширение Keep-Alive для HTTP/1.0 и функция постоянного соединения HTTP/1.1 обеспечивают длительные HTTP-сессии, позволяя отправлять несколько запросов по одному TCP-соединению. Это может привести к почти 50% ускорению времени задержки для HTML-документов с множеством изображений |
|
|
|
Указывает время, в течение которого сервер будет ждать последующих запросов по постоянному соединению. Веб-сервер будет ждать указанное количество секунд перед закрытием соединения. Суффикс |
|
Нет |
|
Контролирует доступ для определенных HTTP-методов. Обычно управление доступом действует для всех методов доступа, и это желаемое поведение. В общем случае директивы контроля доступа не требуется помещать в секцию |
|
Нет |
|
Контролирует доступ ко всем HTTP-методам, кроме указанных. Директивы контроля доступа, заключенные в |
|
|
|
Определяет максимальное количество внутренних перенаправлений и вложенных подзапросов. Внутреннее перенаправление происходит, например, при использовании директивы |
|
|
|
Ограничивает общий размер тела HTTP-запроса, отправляемого от клиента. Указывает количество байт, разрешенных в теле запроса. Значение |
|
|
|
Ограничивает количество полей заголовков HTTP-запросов, которые будут приняты от клиента. |
|
|
|
Ограничивает размер заголовка HTTP-запроса, разрешенного от клиента. Указывает количество байт, которые будут разрешены в заголовке |
|
|
|
Ограничивает размер строки HTTP-запроса, которая будет принята от клиента. Устанавливает количество байт, которые будут разрешены в строке HTTP-запроса |
|
|
|
Ограничивает размер тела запроса на основе XML. |
|
Нет |
|
Применяет заключенные директивы только к соответствующим URL. Ограничивает область действия заключенных директив по URL. Похожа на директиву |
|
Нет |
|
Применяет заключенные директивы только к URL, соответствующим регулярному выражению. Ограничивает область действия заключенных директив по URL аналогично директиве |
|
|
|
Управляет уровнем детализации сообщений, записываемых в журнал ошибок (см. директиву |
|
|
|
Ограничивает количество запросов, разрешенных на постоянном соединении, когда KeepAlive включен. Если |
|
|
|
Ограничивает количество перекрывающихся HTTP-диапазонов, которые сервер готов вернуть клиенту. Если запрашивается больше перекрывающихся диапазонов, чем разрешено, возвращается полный ресурс |
|
|
|
Ограничивает количество обратных диапазонов HTTP, которые сервер готов вернуть клиенту. Если запрашивается больше обратных диапазонов, чем разрешено, возвращается полный ресурс |
|
|
|
Ограничивает количество HTTP-диапазонов, которые сервер готов вернуть клиенту. Если запрашивается больше диапазонов, чем разрешено, возвращается полный ресурс |
|
|
|
Управляет тем, будет ли сервер объединять последовательные слеши в URL. По умолчанию сервер объединяет (или сокращает) несколько последовательных символов слеша ( |
|
|
|
Определяет, будут ли трейлеры объединены в заголовки. Объединение происходит, когда тело запроса полностью обработано, задолго до того, как большинство процессов обработки заголовков успевают проверить или изменить заголовки запроса |
|
|
|
Настраивает механизм Mutex и каталог файлов блокировок для всех или указанных Mutexes. Устанавливает механизм и, при необходимости, местоположение файла блокировки, который |
|
Нет |
|
Не имеет эффекта в настоящий момент. Устарела, была предназначена для назначения IP-адреса для виртуального хостинга по имени. В настоящее время виртуальный хостинг по имени автоматически включается для любого IP-адреса и порта, используемого в нескольких виртуальных хостах |
|
|
|
Настраивает, какие серверные функции доступны в определенном каталоге |
|
Нет |
|
Определяет протокол для сокета прослушивания. Протокол используется для определения того, какой модуль должен обрабатывать запрос, и для применения оптимизаций, специфичных для протокола, с помощью директивы |
|
|
|
Определяет список протоколов, поддерживаемых для сервера или виртуального хоста. Этот список определяет разрешенные протоколы, которые клиент может согласовать для данного сервера или хоста |
|
|
|
Определяет, должен ли сервер учитывать порядок, в котором протоколы перечислены в директиве |
|
|
|
Управляет тем, будет ли переменная окружения |
|
|
|
Позволяет настроить размер (в байтах) буфера памяти, используемого для чтения данных из сети или файлов |
|
|
|
Позволяет настраивать глобальные/по умолчанию параметры для регулярных выражений. Добавляет некоторые стандартные поведения к любому регулярному выражению, используемому впоследствии |
|
Нет |
|
Управляет регистрацией нестандартных HTTP-методов. Это необходимо, если нужно использовать нестандартные методы с директивами, которые принимают имена методов в качестве параметров, или для разрешения использования определенных нестандартных методов через прокси или CGI-скрипты, когда сервер настроен на передачу модулям только распознанных методов |
|
Используются значения по умолчанию операционной системы |
|
Ограничивает потребление CPU процессами, запущенными дочерними процессами веб-сервера. Принимает 1 или 2 параметра. Первый параметр устанавливает «мягкий» лимит ресурсов для всех процессов, а второй - устанавливает максимальный лимит ресурсов. Каждый параметр может быть числом или |
|
Используются значения по умолчанию операционной системы |
|
Ограничивает потребление памяти процессами, запущенными дочерними процессами веб-сервера. Принимает 1 или 2 параметра. Первый параметр устанавливает «мягкий» лимит ресурсов для всех процессов, а второй - устанавливает максимальный лимит ресурсов. Каждый параметр может быть числом или |
|
Используются значения по умолчанию операционной системы |
|
Ограничивает количество процессов, которые могут быть запущены юнитами, активированными дочерними процессами веб-сервера. Принимает 1 или 2 параметра. Первый параметр устанавливает «мягкий» лимит ресурсов для всех процессов, а второй - устанавливает максимальный лимит ресурсов. Каждый параметр может быть числом или |
|
|
|
Определяет, отображает ли модуль |
|
Нет |
|
Устанавливает адрес для связи, который сервер включает в любые сообщения об ошибках, отправляемые клиенту. Если |
|
Нет |
|
Устанавливает альтернативные имена для хоста, используемые при сопоставлении запросов с name-based виртуальными хостами. Может включать подстановочные знаки |
|
Нет |
|
Устанавливает схему запроса, имя хоста и порт, которые сервер использует для своей идентификации |
|
Нет |
|
Устанавливает устаревший URL-путь для хоста, используемый с name-based виртуальными хостами |
|
|
|
Устанавливает базовый каталог для установки сервера. Обычно он содержит подкаталоги |
|
|
|
Настраивает нижний колонтитул на документах, сгенерированных сервером (сообщениях об ошибках, списках каталогов FTP модуля |
|
|
|
Конфигурирует заголовок HTTP-ответа сервера. Управляет тем, будет ли поле заголовка ответа сервера, отправляемое клиентам, включать описание общего типа ОС сервера, а также информацию о скомпилированных модулях |
|
Нет |
|
Указывает обработчик (handler) для работы с соответствующими файлами |
|
Нет |
|
Устанавливает фильтр или фильтры, которые будут обрабатывать клиентские запросы и ввод POST, когда они поступают на сервер. Является дополнением к любым фильтрам, определенным в других местах, включая директиву |
|
Нет |
|
Устанавливает фильтры, которые будут обрабатывать ответы от сервера перед их отправкой клиенту. Является дополнением к любым фильтрам, определенным в других местах, включая директиву |
|
|
|
Управляет тем, требует ли сервер, чтобы запрашиваемое имя хоста было перечислено в виртуальном хосте, обрабатывающем запрос. По умолчанию сервер отвечает на запросы для любого имени хоста, включая неожиданные или неконфигурированные имена хостов. Для предотвращения самореферентных ответов желательно ограничить, какие имена хостов обрабатывает бэкенд-приложение |
|
|
|
Определяет, сколько времени сервер будет ждать заданных событий (например, ввода-вывода), прежде чем завершить запрос |
|
|
|
Определяет поведение для запросов TRACE как для основного сервера, так и для |
|
Нет |
|
Управляет тем, какие UNC-имена хостов могут быть доступны серверу. Во время обработки запросов доступ к файловой системе, который разрешается в UNC-пути, будет невозможен, если имя хоста в UNC-пути не указано в этой директиве. Целью является ограничение доступа к путям, полученным из ненадежных источников |
|
Нет |
|
Отменяет существование переменной, а также эффект директивы |
|
|
|
Настраивает, как сервер определяет свое собственное имя и порт. Во многих ситуациях |
|
|
|
Настраивает, как сервер определяет свой собственный порт. Во многих ситуациях |
|
Нет |
|
Содержит директивы, которые применяются только к определенному виртуальному хосту по его имени или IP-адресу. Любая директива, разрешенная в контексте виртуального хоста, может быть использована |