Веб-сервер Apache

Андрей Пашков, Алекс Сергеев, Александр Сутулов

Введение

Apache — самый популярный веб-сервер[18] в Интернете. Несколько лет разработки сделали его чрезвычайно удобным, быстрым, лёгким в настройке и надёжным.

В дистрибутивы ALT Linux Team включена ветвь Russian Apache, разрабатываемая группой российских разработчиков во главе с Алексеем Тутубалиным. Она дополнена специальным модулем mod_charset, позволяющим «на лету» выполнять перекодировку символов из кодировки, в которой файл хранится на диске, в кодировку, которую запросил клиент у сервера. В конфигурационных файлах ALT Linux данная возможность по умолчанию отключена.

Дополнительную информацию о apache вы можете найти здесь:

  • Apache Software Foundation (www.apache.org); Apache HTTPD Project (httpd.apache.org)

  • Сайт проекта Russian Apache (apache.lexa.ru)

  • httpd(8); Apache Manual (в поставке дистрибутива)

  • Apache Overview HOWTO

Варианты установки пакетов ALT

Разработчики Apache, понимая широчайший спектр задач на серверах интернет заложили в него возможности модульного расширения. Ядро веб-сервера может вызывать различный набор дополнительных модулей, которые выполняют специальные задачи, в числе которых — управление веб-сайтами, разделение доступа, изменение показа содержимого веб-страниц и другие.

В дистрибутивах ALT Linux доступен полный набор модулей, которые распространяются вместе с исходными текстами Apache, а так же модули интеграции с Perl (mod_perl), работы с кодировками (mod_charset), языка PHP (mod_php) и некоторые другие.

Вот краткий обзор пакетов дистрибутива, которые могут изменять комплектность и функциональные возможности вашего веб-сервера:

apache-common

Базовые файлы, необходимые для работы веб-сервера. Используется как основа для установки пакета apache или apache-mod_perl

apache

Russian Apache — основной модуль веб-сервера и каталог вызываемых модулей, достаточный для работы большинства веб-серверов в интернет.

apache-mod_perl

Russian Apache скомпилированный вместе с модулем mod_perl (perl.apache.org) интегрирующем интерпретатор языка Perl в веб-сервер. Данный вариант существенно ускоряет работу веб-скриптов на этом языке, но, вместе с тем, в некоторых случаях требует их переработки. Такая интеграция так же позволяет программам на Perl обращаться к внутренним структурам и функциям Apache, что существенно расширяет возможности Perl-скриптов. О совместном запуске версий Apache с интегрированным Perl - интерпретатором и без него читайте далее.

apache-manual

Документация веб-сервера, описывающая все модули и директивы Apache, включающая в себя множество примеров конфигурации веб-сервера и необходимая как для новичков, так и для «профи».

apache-suexec

Данный пакет позволяет Apache запускать веб-скрипты от имени различных пользователей. Базовая версия веб-сервера всегда работает от одного и того же пользователя. Данный пакет может быть полезен для тех, кто предоставляет возможность создания скриптов на сервере многим пользователям и нуждается в защите информации каждого из пользователей от действий друг друга.

apache-devel

Пакет содержит заголовочные файлы из исходных текстов веб-сервера Apache, необходимые для сборки динамически подключаемых модулей (DSO). Если вы устанавливаете веб-сервер Apache и собираетесь компилировать или разрабатывать для него дополнительные модули, вам нужно установить этот пакет.

mod_php

Пакет поддержки языка PHP в веб-скриптах. Накладывается на пакет apache и работает как подгружаемый модуль.

mod_*

Другие пакеты вида mod_* содержат некоторые дополнительные модули. Если вам необходим модуль с какой то особой функциональностью - вы можете заглянуть на сайт — библиотеку модулей Apache modules.apache.org.

Первые шаги после установки

«Свежеустановленный» Apache вполне работоспособен. Если вы устанавливали дистрибутив включая в cистему пакеты Apache и указали необходимость автоматического запуска сервиса httpd[19] при старте системы — можете протестировать его работоспособность набрав http://ip-адрес-сервера/ в любом доступном веб-броузере (в том числе вы можете использовать lynx localhost из командной строки локальной машины).

Управление запущенным веб-сервером желательно осуществлять следующими директивами:

service httpd status

Показывает список запущенных процессов веб-сервера или сообщает, что веб-сервер не был загружен.

service httpd stop; service httpd start

Останавливает, а затем запускает основной процесс веб-сервера. Основной процесс сам управляет остановкой и запуском дочерних процессов Apache

service httpd restart

«Холодный» перезапуск Apache. Выполняются действия аналогичные последовательной остановке и старту httpd приведёнными выше командами.

service httpd graceful

«Тёплый» перезапуск Apache. Корневой процесс перезапускает все дочерние процессы, закончившие обработку текущих запросов, перечитывает конфигурационный файл и передаёт новые настройки вновь создаваемым дочерним процессам. Работа с клиентами при этом не прерывается.

Настройка Apache

Apache конфигурируется изменением служебных файлов в каталоге /etc/httpd/conf/. Главный конфигурационный файл веб-сервера — httpd.conf. Конфигурационные директивы могут размещаться в различных файлах, которые включают в основной конструкцией Include имя_файла.conf.

Eсли размещение какого-либо файла или каталога в конфигурационном файле указано неявно (явное размещение начинается с корня файловой системы — с символа '/') Apache использует каталог, заданный в директиве ServerRoot для определения реального местоположения цели.

Описание модулей и конфигурационных директив Apache

Директивы могут быть использованы на следующих уровнях:

A

уровень конфигурации сервера — директива может быть использована только в главном конфигурационном файле.

V

уровень <VirtualHost> — директиву можно использовать по-разному для разных виртуальных хостов.

D

уровень <Directory> — для любого каталога директивой этого уровня можно установить свои настройки.

h

уровень файлов .htaccess — директиву разрешено использовать в файлах .htaccess в местах, где они разрешены сервером.

В любой точке использование в директиве параметра filename обозначает абсолютный (начинается с '/') или относительный от каталога ServerRoot путь к файлу.

CORE — ядро веб-сервера (основной модуль Apache)

AccessConfig filename [AV]

Устанавливает расположение файла конфигурации. Системный файл конфигурации по умолчанию — conf/access.conf; для отмены чтения этого файла рекомендуется устанавливать /dev/null.

AccessFileName file file ... [AV]

Устанавливает имена файлов доступа, используемых для настройки конфигурации «на лету» по умолчанию — .htaccess.

AddModule module module ... [A]

Активирует динамически загружаемый модуль, поставляемый в виде отдельного библиотечного файла.

AddModule module module ...

Активирует динамически загружаемый модуль, поставляемый в виде отдельного библиотечного файла или скомпилированного внутрь главного модуля httpd.

AllowOverride param param ...

Устанавливает правила, по которым Apache использует директивы внутренних файлов .htaccess;

None — игнорирует;

All — использует все директивы;

Options — разрешает использовать Options и XBitHack;

Indexes — директивы управления индексированием каталогов;

FileInfo — директивы управления типами файлов и их обработчиками;

AuthConfig — директивы доступа к каталогам Auth*;

Limit — директивы allow/deny/order.

AuthName realm [Dh]

Указывает имя области авторизации используемой для запроса имени и пароля у клиентов.

AuthType type [Dh]

Используется для указания способа запроса и передачи имени пользователя и пароля для доступа к каталогам веб-сайтов. Чаще всего используют Basic, реже — Digest и другие.

BindAddress address [A]

Задаёт адрес, на котором Apache будет принимать соединения. Можно использовать имя хоста, IP-адрес или *.

ClearModuleList [A]

Директива очищает список загруженных модулей. После данной директивы нужно использовать директивы AddModule для работы с необходимыми модулями.

ContentDigest on|off [AVDh]

Включает или выключает пересылку MD5 хэша данных. Вычисляется для всех передаваемых страниц и не кешируется.

CoreDumpDirectory dirname [A]

Указывает Apache на каталог, в котором будут сохраняться файлы дампа памяти (core), создаваемые при аварийных ошибках.

DefaultType mimetype [AVDh]

Задаёт тип MIME, отправляемый клиентам, если Apache не может определить тип через файл mime.types или директивы AddType. По умолчанию установлен как text/plain.

<Directory dirname>...</Directory> [AV]

Объединяет группу директив, задающих поведение Apache при обращениях к документам, расположенным в данной директории. Разрешено использовать маски имён — символы *, ? по правилам shell. В случае использования маски перед именем помещается знак тильда ~.

<DirectoryMatch regexp>...</DirectoryMatch> [AV]

Определяет группу каталогов заданных регулярным выражением и устанавливает правила работы Apache с каталогами и файлами этой группы.

DocumentRoot dirname [AV]

Указывает серверу месторасположение корня дерева каталогов в ниже которого расположена структура данных веб-сервера.

ErrorDocument filename|string|URL [AVDh]

В случае ошибки делает редирект на указанные страницы. Также можно установить комментарий к возникшей ситуации, который должен начинаться с одной кавычки. Пример:

ErrorDocument 500 http://foo.example.com/cgi-bin/tester

ErrorDocument 404 /cgi-bin/bad_urls.pl

ErrorDocument 401 /subscription_info.html

ErrorDocument 403 "Sorry can't allow you access today"

ErrorLog filename [AV]

Имя файла протокола ошибок. Если строка параметра начинается с (/), то путь к файлу нужно указывать от ServerRoot; если она начинается с (|), тогда сообщения ошибок передаются указанной команде на стандартный вход. В частности, таким образом, например, можно реализовать сохранение журнала сразу в SQL СУБД или сохранять их сразу сжатыми, передавая, для примера, на gzip. Apache версии 1.3 и выше по умолчанию выводит сообщения в syslog, если система поддерживает такую возможность; но это можно запретить используя syslog:facility.

<Files filename>...</Files> [AVh]

Контроль доступа к файлу. Разделы <Files> обрабатываются в том же порядке, что и в файле конфигурации, после того, как прочитаны разделы директивы <Directory> и файлы .htaccess, но перед тем, как прочитаны разделы директории <Location>. Аргумент должен содержать имя фала или маску, в которой '?' - любой символ, '*' - любая строка. С дополнительным символом ~ могут использоваться расширенные рег. выражения (см REGULAR EXPRESSIONS секцию в grep(1) ) Например: <Files ~ "\.(gif|jpe?g|png)$"> будет соответствовать общеиспользуемым в Internet графическим файлам.

<FilesMatch regexp>...</FilesMatch> [AVh]

То же что и <Files>, но использует регулярные выражения.

Group name [AV]

Имеет отношение только к запуску Apache и отфоркиванию процессов в окружении и с правами соответствующему данному имени.

HostNameLookups on|off|double [AVD]

Управляет возможностью определения имени хоста посетителя по реверсному ДНС. Работает медленно и по умолчанию считается отключённой. Double указывает, что имя хоста должно быть подвергнуто дополнительной проверке на соответствие этого имени IP адресу отправившего запрос хоста.

IdentityCheck on|off [AVD]

Включение RFC1413 аутентификации. Включение функции значительно увеличит время доступа к серверу.

<IfDefine variable>...</IfDefine> [AVDh]

Указывает, что директивы, помещённые внутри блока, образованного парой директив <IfDefine...> и </IfDefine> должны быть выполнены только если данный параметр определён во внутренних структурах Apache. Предшествующий параметру знак [!] указывает, что блок директив будет прочтён только если параметр не определён.

<IfModule name>...</IfModule> [AVDh]

Указывает, что директивы, помещённые внутри блока, образованного парой директив <IfModule...> и </IfModule> должны быть выполнены только если данный модуль откомпилирован в Apache. Предшествующий модулю знак [ !] указывает, что блок директив будет прочтён только если параметр не определён.

Include filename [A]

Директива позволяет включать файлы конфигурации в конфигурацию сервера.

KeepAlive on|off [A]

Разрешает клиенту последовательно запрашивать несколько файлов без разрыва TCP соединения.

KeepAliveTimeout sec [A]

Указывается время (в секундах) до разрыва TCP соединения, которое Apache будет ждать следующего запроса от клиента.

<Limit>...</Limit> [AVDh]

Позволяет указывать к какому HTTP методу (например GET или POST) относятся помещённые внутрь <Limit ...> ... </Limit> команды ограничения доступа.

Могут использоваться методы: GET, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE, PATCH, PROPFIND, PROPPATCH, MKCOL, COPY, MOVE, LOCK, UNLOCK.

Listen [IP:]port [A]

Заставляет Apache слушать указанные адреса и порты. Например, что бы заставить сервер слушать порты 80 и 8000, используйте:

Listen 80

Listen 8000

Чтобы Apache работал на разных интерфейсах с указанными номерами портов, используйте:

Listen 192.170.2.1:80

Listen 192.170.2.5:8000

ListenBacklog length [A]

Максимальная длина очереди обработки подключений.

<Location path>...</Location> [AV]

Подробности в apache-manual :)

<LocationMatch path>...</LocationMatch> [AV]

Подробности в apache-manual

Lockfile filename [A]

Директива устанавливает путь к lockfile.

LogLevel emerg|alert|crit|error|warn|notice|info|debug [AV]

Устанавливает уровень информативности протокола (лог-файла работы сервера). Рекомендуется использование по крайней мере уровня crit.

MaxClients count [A]

Директива устанавливает предел на число одновременных запросов к серверу. На самом деле, это число не может превышать число дочерних процессов сервера, которых по умолчанию не может быть более 256. Что бы исправить ситуацию редактируйте HARD_SERVER_LIMIT в httpd.h и компилируйте его.

MaxKeepAliveRequest count [A]

Разрешает клиенту последовательно запрашивать указанное число файлов без разрыва TCP соединения, если включена KeepAlive. Если параметр установлен в 0, то Apache будет разрывать соединение только учитывая параметр KeepAliveTimeout.

MaxRequestsPerChild count [A]

Директива устанавливает предел на числе запросов которые может обработать индивидуальный дочерний процесс. Если MaxRequestsPerChild установлена в 0, число запросов не ограничено.

MaxSpareServers count [A]

Директива устанавливает желательное максимальное число неактивных процессов сервера. Директива бесполезна если используется версия Apache для Microsoft Windows.

MinSpareServers count [A]

Директива устанавливает желательное минимальное число неактивных процессов сервера. Директива бесполезна если используется версия Apache для Microsoft Windows.

NameVirtualHost [IP:]port [A]

Указывает, что запросы к данному порту-имени следует разделять по имени хоста к которому производится обращение (заголовок 'Host:' HTTP). Позволяет определять несколько виртуальных хостов для одного IP адреса.

Options param param ... [AVDh]

Определяет установки действий Apache для указанного контента. Подробно все возможные установки описаны в apache-manual. Часто применяемые: Indexes - включает показ содержимого каталога если в нем не найден индексный файл (директива DirectoryIndex); ExecCGI - включает возможность размещения в данном каталоге исполняемых файлов (cgi, perl скриптов); Includes - включает возможность размещения в каталоге SSI файлов. Каждая установка поддерживается соответствующим модулем её использующим и может не действовать если нужный модуль не подгружен. Каждая директива Options считается дополняющей уже известные Options определённые для родительских каталогов. Каждая установка может сопровождаться префиксом + или - для её "включения-выключения" в данном контексте.

PidFile filename [A]

Директива устанавливает имя файла в который сервер записывает идентификатор процесса.

Port port [A]

Указывает Apache порт - число от 0 до 65535 (следует помнить, что некоторые порты могут использоваться другими протоколами, см. /etc/servises). Стандартный порт для http протокола - 80.

require userid|groupid|valid-user|file-owner|group-owner [A]

Определяет, какие пользователи имеют доступ к каталогу.

Синтакс:

  • Require user userid [userid] - только эти пользователи имеют доступ

  • Require group имя-группы [имя-группы] - все пользователи этих групп

  • Require valid-user - все адекватные пользователи.

ResourceConfig filename [A]

Сервер читает из этого файла дальнейшие директивы после прочтения httpd.conf. Имя файла задаётся относительно ServerRoot.Может быть отключена: ResourceConfig /dev/null

RLimitCPU max|sec[ max|sec] [A]

RLimitMEM max|bytes[ max|bytes] [A]

RLimitNPROC max|count[ max|count] [A]

Satisfy any|all [A]

Определяет политику доступа, если одновременно используются Allow и Require. Используется в том случае, когда доступ к области ограничен именем/паролем и клиентским адресом. В этом случае по умолчанию ("all") требуется, чтобы клиент прошёл проверку по адресу и ввёл правильное имя и пароль. В случае параметра "any" клиент получит доступ если ввёл правильное имя и пароль или прошёл ограничение по хосту. Может использоваться, чтобы ограничить доступ через пароль, но пропустить клиентов с определённого адреса без пароля.

ScoreBoardFile filename [A]

Директива требуется для того, что бы указать имя файла, используемый сервером для связи между дочерними и материнскими процессами. Выяснить, требуется ли этот файл, можно запустив Apache и посмотрев, создал ли он файл с заданным именем. Если да, то нужно убедиться, что он используется только одной копией Apache.

SendBufferSize bytes [A]

Установит размер буфера TCP.

ServerAdmin email [AV]

Устанавливает email адрес, который сервер показывает клиенту в сообщения об ошибках.

ServerAlias hostname [hostname ...] [AV]

Задаёт альтернативное виртуальное имя хоста.

ServerName hostname [AV]

Директива устанавливает имя сервера; используется в создании ссылок. Если имя не задано, сервер попытается получить его из собственного IP-адреса.

ServerPath path [AV]

Директива устанавливает унаследованное имя пути для хоста.

ServerRoot path [A]

Устанавливает каталог, в котором живёт сервер. Обычно содержит подкаталоги conf/ и logs/. Пути для других файлов конфигурации строится относительно этого каталога.

ServerSignature on|ff|mail [AVDh]

Конфигурирует строку внизу сгенерированного сервером документа. По умолчанию выключено, On - показывает версию сервера и ServerName виртуального хоста, Email добавляет ссылку mailto: на ServerAdmin

ServerTokens Minimal|OS|Full [A]

Контролирует заголовок, отсылаемый клиенту сервером с описанием ОС сервера и скомпилированных модулей.

ServerType standalone|inetd [A]

Определяет, как сервер запускается системой. inetd - запускается из системного процесса inetd. standalone - как daemon-процесс.

StartServers count [A]

Устанавливает число дочерних процессов, создаваемых при запуске. Число все равно динамически изменяется в зависимости от загрузки, обычно нет причин менять этот параметр.

TimeOut sec [A]

Время, которое Apache будет ждать: получения запроса GET, получение пакетов TCP на запросах POST и PUT, пауза между ACK'ами при передаче пакетов TCP в ответах.

UseCanonicalName on|off [AVDh]

Заставляет Apache генерировать названия страниц которые он создаёт используя значения SERVER_NAME с SERVER_PORT.

User username [AV]

Устанавливает userid, по которому сервер будет отвечать на запросы. Чтобы использовать директиву, сервер должен быть запущен как root.

<VirtualHost addr[:port][ addr[:port]] ...>...</VirtualHost> [A]

Директивы, помещённые внутри блока, образованного парой директив <VirtualHost...> и </VirtualHost> определяю конфигурацию заданного виртуального хоста. У каждого виртуального хоста должен быть уникальный IP-адрес, номер порта или имя хоста. Директиву имеет смысл использовать если, например, сервер имеет сетевой интерфейс для внутренней сети и ещё один интерфейс для внешней сети.

mod_env - устанавливающий и передающий переменные для обработки в CGI/SSI файлы

PassEnv variable[ variable] ... [AV]

Передаёт переменную окружения (напр. HOME) обработчикам.

SetEnv variable value [AV]

Записывает заданное значение в указанную переменную окружения.

UnsetEnv variable[ variable] ... [AV]

Сбрасывает переменную, что делает невозможным её прочтение из обработчиков.

mod_setenvif - использующий условные выражения для установки переменных окружения

BrowserMatch regex env-variable[=value] [env-variable[=value]] ... [A]

Использует переданное регулярное выражение как фильтр для заголовка User-Agent от броузера клиента. При удачном попадании инициализирует переменную данным значением. Если указано только имя переменной - она инициализируется числом 1. Если указана переменная с предшествующим знаком '!' - переменная сбрасывается.

BrowserMatchNoCase regex env-variable[=value] [env-variable[=value]] ... [A]

Действует аналогично BrowserMatch допуская различия в регистре символов переданного значения User-Agent и используемого в качестве фильтра регулярного выражения.

SetEnvIf attribute regex env-variable[=value] [env-variable[=value]] ... [A]

Выполняемое директивой действие полностью аналогично BrowserMatch, но вместо User-Agent может быть использован любой другой заголовок: Remote_Host; Remote_Addr; Remote_User; Request_Method; Request_URI; Referer

SetEnvIfNoCase attribute regex env-variable[=value] [env-variable[=value]] ... [A]

Отличие от SetEnvIf такое же как у BrowserMatchNoCase от BrowserMatch выше.

mod_unique_id - генерирующий уникальную переменную окружения UNIQUE_ID

Переменная генерируется случайным образом из IP адреса сервера, номера работающего процесса, временными отметками и дополнительными внутренними счётчиками.

Переменная предназначена для использования в составных документах, когда невозможно отследить один и тот же запрос другими методами.

mod_mime - предназначенный для определения mime типа файла при передачи его клиенту

AddCharset charset extension [extension] ... [AVDh]

Для указанных расширений файлов указывает Apache необходимость передачи данного charset при ответе клиенту.

AddEncoding MIME-enc extension [extension] ... [AVDh]

Для указанных расширений файлов указывает Apache возможность передачи файла с использованием нужной кодировки MIME.

AddHandler handler-name extension [extension] ... [AVDh]

Указывает Apache, что файлы с данными расширениями должны быть переданы конкретному обработчику. Обработчик может как внутренним (cgi-sript и другие), так и внешним, описанным ранее директивой Action.

AddLanguage MIME-lang extension [extension] ... [AVDh]

Устанавливает связь между расширениями файлов и передаваемым в ответе кодом языка.

AddType MIME-type extension [extension] ... [AVDh]

Дополняет таблицу MIME - типов новым соответствием расширений файлов и кода MIME для ответа клиенту.

DefaultLanguage MIME-lang [AVDh]

Устанавливает язык ответа передаваемый всегда, если это невозможно сделать другими средствами.

ForceType MIME-type [Dh]

Форсирует ответ с данным MIME-типом в каталоге, к которому отнесена данная директива.

RemoveEncoding extension [extension] ... [Dh]

Удаляет код MIME-кодировки в ответе для файлов с данными расширениями.

RemoveHandler extension [extension] ... [Dh]

Указывает Apache не запускать обработчиков для файлов с данными расширениями.

RemoveType extension [extension] ... [Dh]

Сбрасывает MIME-тип в ответе клиенту на тип MIME по умолчанию

SetHandler handler [Dh]

Форсирует вызов данного обработчика для всех файлов к которым отнесена данная директива.

TypesConfig filename [A]

Указывает расположение таблицы соответствия MIME-типов. По умолчанию - conf.mime.types

mod_mime_magic - модуль использующий сложные правила для определения MIME-типа передаваемого в ответе файла

MimeMagicFile filename [AV]

Активизирует действие модуля с использованием указанного файла на данную область документов веб-сервера или на все документы доступные Apache.

mod_negotiation - обеспечивающий согласование передаваемых типов данных между клиентом и сервером

CacheNegotiatedDocs [A]

Разрешает кеширование документов с согласуемым содержимым на промежуточных прокси-серверах и компьютере клиента.

LanguagePriority MIME-lang [MIME-lang] ... [A]

Определяет приоритет языков используемых в ответе клиенту, когда точно не удаётся определить или найти затребованный клиентом язык документа.

mod_alias - позволяющий располагать документы в каталогах веб-сервера более произвольным образом

Alias URL-path filesystem-path [AV]

Указывает Apache, что документы, расположенные "ниже" данного URL следует искать "ниже" данного расположения в файловой системе.

AliasMatch URL-regexp filesystem-path [AV]

Определяет более сложные правила поиска данных в файловой системе по результатам сравнения URL с регулярным выражением.

Redirect [status ]URL-path URL [AVDh]

В ответ на запрос URL-path и "ниже" расположенных документов возвращает указанный код ответа (302 по умолчанию) и перенаправляет клиента на другой URL. Статус может задаваться как число или символически: permanent (301), temp (302), seeother (303), gone (410). Для кода ответа 410 URL ответа должен быть опущен.

RedirectMatch [status ]URL-regexp URL [AVDh]

Аналогично Redirect, с использованием для сравнения переданного URL не точного соответствия а заданного регулярного выражения.

RedirectTemp URL-path URL [AVDh]

Аналогично Redirect с использованием кода ответа 302.

RedirectPermanent URL-path URL [AVDh]

Аналогично Redirect с использованием кода ответа 301.

ScriptAlias URL-path filesystem-path [AV]

Действует аналогично Alias но автоматически задаёт запуск cgi-handler обработчика для всех файлов внутри целевой директории.

ScriptMatch URL-regexp filesystem-path [AV]

Аналогично ScriptAlias, с проверкой URL регулярным выражением.

mod_rewrite - управляющий расположением документов на сервере

В кратком собрании описания директив Apache сложно описать задачи решаемые этим сложным модулем. Как руководство к действию лучше всего использовать специальные разделы apache-manual "Module mod_rewrite URL Rewriting Engine" и "URL Rewriting Guide". Обучиться использованию данного модуля проще всего рассматривая конкретные задачи и их решения с его использованием.

Ниже приведён синтаксис директив этого модуля.

RewriteEngine on|off [AVDh]

RewriteOptions inherit [AVDh]

RewriteLog filename [AV]

RewriteLogLevel level [AV]

RewriteLock filename [A]

RewriteMap MapName MapType:MapSource [AV]

RewriteBase URL-path [Dh]

RewriteCond TestString CondPattern [AVDh]

RewriteRule Pattern Substitution [AVDh]

mod_speling - пытающийся исправлять ошибки в URL, которые клиенты запрашивают с сервера

CheckSpelling on|off [AVDh]

Включает работу данного модуля в заданной области документов сервера.

mod_vhost_alias - определяющий шаблоны для виртуальных серверов обслуживаемых на данном сервере

В обслуживаемых параметрах для директив данного модуля могут быть использованы следующие макроподстановки:

  • %% - вставляет знак процента

  • %p - вставляет номер порта к которому произведено обращение

  • %N.M - определяет определённую часть имени хоста. Подробности в разделе "Module mod_vhost_alias" документации Apache.

  • %0 - частный случай %N.M - все имя виртуального хоста.

  • %-2 - частный случай %N.M - две последние части имени. В общем случае - имя домена к которому произведено обращение.

VirtualDocumentRoot interpolated-directory [AV]

Указывает Apache каталог в котором ведётся поиск документов динамически конфигурируемых виртуальных серверов. Если параметр не содержит макро-символов Apache будет искать документы в одном и том же каталоге для всех запрашиваемых виртуальных имён.

VirtualDocumentRootIP interpolated-directory [AV]

VirtualScriptAlias interpolated-directory [AV]

Интерполирует виртуальную директорию cgi-bin для динамически конфигурируемых сайтов.

VirtualScriptAliasIP interpolated-directory [AV]

mod_dir - обрабатывающий запросы к директориям

DirectoryIndex local-url [local-url] ... [AVDh]

Определяет список файлов, которые Apache будет искать в запрошенной директории и передавать клиенту как ответ на поступивший запрос. Может указывать не только на файлы расположенные внутри запрошенного каталога. Разрешается ссылаться и на определённый абсолютным путём URL. Например /cgi-bin/directory.cgi

mod_autoindex - предоставляющий возможность показа списка файлов в директориях

AddAlt string file [file] ... [AVDh]

Директива определяет подписи под иконками в файл-листинге. Может использоваться не только с именами файлов в качестве параметров, но и только с их расширениями.

AddAltByEncoding string MIME-encoding [MIME-encoding] ... [AVDh]

Определяет подписи под иконками в листинге, для которых определена MIME-кодировка присутствующая в списке параметров.

AddAltByType string MIME-type [MIME-type] ... [AVDh]

Аналогично AddAltByEncoding, но использует для подстановки описания определяемый MIME-тип объекта.

AddDescription string file [file] ... [AVDh]

Действует аналогично AddAlt, добавляя строковое описание с типом или именем файла. Текст будет появляться справа от имени файла.

AddIcon icon name [name] ... [AVDh]

AddIcon (string,icon) name [name] ... [AVDh]

AddIconByEncoding icon name [name] ... [AVDh]

AddIconByType icon name [name] ... [AVDh]

Задаёт Apache соответствие между именами или расширениями файлов и показываемой в листинге картинкой (иконкой). Второй вариант синтаксиса позволяет одновременно задавать подпись (см. выше AddAlt)

DefaultIcon url [AVDh]

Определяет URL иконки, которая будет использована по умолчанию.

FancyIndexing on|off [AVDh]

Включает-выключает возможность показа индекса для каталогов.

HeaderName filename [AVDh]

Задаёт файл-заголовок, который будет вставлен над перечнем файлов при показе индекса.

IndexIgnore filename [filname] ... [AVDh]

Определяет маску файлов, которые не будут отображаться в листинге директории.

IndexOptions param [param] ... [AVDh]

Изменяет способ вывода индекса файлов. Описание всех директив можно посмотреть в apache-manual.

IndexOrderDafault Ascending|Descending Name|Date|Size|Description [AVDh]

Определяет способ сортировки файлов в списке по-умолчанию. Пользователь способен изменять сортировку уже показанного списка, если это не запрещено в IndexOptions.

ReadmeName filename [AVDh]

Указывает имя файла, содержимое которого будет добавлено после листинга файлов.

mod_access - разрешает или запрещает доступ клиента к документам веб-сервера

Allow from all|host|env=env-variable [host|env=env-variable] ... [Dh]

Разрешает доступ к каталогам сервера. Либо для всех клиентов, либо для клиентов пришедших с указанного IP, либо с указанного символического имени хоста. В качестве параметра так же может быть указано условное выражение с именем переменной. В случае с IP и именем хоста можно использовать только последнюю часть имени или первые части IP адреса. IP может быть дополнен маской сети или обратной маской после символа '/'

Deny from all|host|env=env-variable [host|env=env-variable] ... [Dh]

Запрещает доступ после проверки, аналогичной директиве Allow.

Order Deny,Allow [Dh]

Определяет способ проверки доступа к данным. Проверяет директиву Deny. Всем не подпадающим под неё клиентам разрешает доступ.

Order Allow,Deny [Dh]

Определяет способ проверки доступа к данным. Проверяет директиву Allow. Всем остальным клиентам доступ запрещается.

Order Mutual-failure [Dh]

Проверяет обе директивы и разрешает доступ клиентам "попавшим" в Allow, но не затронутых по Deny.

mod_auth - указывает необходимость авторизации с использованием текстовых файлов

AuthGroupFile file-path [Dh]

Определяет текстовый файл, в котором будут описаны группы пользователей. Имеются некоторые проблемы при работе с большими списками.

AuthUserFile file-path [Dh]

Определяет текстовый файл хранящий имена и пароли пользователей. Пароль рекомендуется вводить-менять утилитой htpasswd.

AuthAuthoritative on|off [Dh]

Определяет важность аутентификации. По умолчанию применяется значение ON. При указании OFF клиенты не предоставившие необходимого имени пользователя будут проверяться другими модулями - по IP или иначе...

mod_auth_dbm - указывает необходимость авторизации с использованием DBM файлов

Инструкции использования директив модуля аналогичны mod_auth. Для хранения групп/паролей используются DBM файлы.

AuthDBMGroupFile file-path [Dh]

AuthDBMUserFile file-path [Dh]

AuthDBMAuthoritative on|off [Dh]

mod_auth_db - указывает необходимость авторизации с использованием DB файлов

Инструкции к директивам аналогичны mod_auth. Для хранения групп и паролей используются Berkley-DB файлы.

AuthDBGroupFile file-path [Dh]

AuthDBUserFile file-path [Dh]

AuthDBAuthoritative on|off [Dh]

mod_auth_anon - предоставляющий возможность предоставления схожей с FTP-сайтами анонимной авторизации

Anonymous user [user] ... [Dh]

Определяет список пользователей, которым необходимо предоставить анонимный доступ без проверки пароля. Имена, включающие пробелы необходимо заключать в кавычки.

Anonymous_Authoritative on|off [Dh]

См. AuthAuthoritative в модуле mod_auth.

Anonymous_LogEmail on|off [Dh]

Включает запись в ErrorLog переданных в качестве паролей адресов электронной почты.

Anonymous_MustGiveEmail on|off [Dh]

Указывает, что анонимные пользователи обязаны передавать адрес электронной почты в качестве пароля, тем самым запрещая вход без пароля.

Anonymous_NoUserID on|off [Dh]

Разрешает доступ без ввода имени пользователя в окне запроса броузера. Может быть затруднительным для некоторых версий InternetExplorer.

Anonymous_VerifyEmail on|off [Dh]

Устанавливает процедуру синтаксиса передаваемого email адреса. Считает аутентификацию успешной только при синтаксически правильном адресе ЭП.

mod_auth_digest - обрабатывающий передаваемые в цифровом виде имена пользователей и пароли

Модуль экспериментальный и в данный момент совершенствуется. Функции, работающие в этом модуле так же частично поддерживаются mod_digest

AuthDigestFile file-path [Dh]

Определяет расположение файла цифровых паролей. Редактирование таких файлов осуществляется утилитой htdigest.

AuthDigestGroupFile file-path [Dh]

Указывает расположение текстового файла определяющего соответствие имён групп и пользователей.

AuthDigestQop none|auth|auth-int [auth|auth-int] [Dh]

Определяет качественность проверки аутентификации. Подробности в apache-manual и на сайте apache.org

AuthDigestNonceLifetime seconds [Dh]

Задаёт продолжительность сеанса работы аутентифицированого пользователя.

AuthDigestDomain URI [URI] ... [Dh]

Определяет область действия авторизационных запросов. Необходимо указывать как минимум один локальный URL. Возможно использовать так же и внешние URL, указывающие на другие сайты, в этом случае, клиент будет пытаться использовать те же данные для авторизации на них.

mod_digest - обрабатывающий цифровую (MD5) авторизацию

AuthDigestFile filename [Dh]

Определяет расположение файла цифровых паролей. Редактирование таких файлов осуществляется утилитой htdigest.

mod_headers - предоставляющий возможность передачи в ответе клиенту заданных HTTP заголовков

Header set|append|add header value [AVDh]

Header unset header [AVDh]

Устанавливает, добавляет, изменяет или сбрасывает значение заголовка ответа.

mod_cern_meta - эмулирующий поведение веб-сервера CERN, ответ которого можно изменять специальными '.meta' - файлами

Этот модуль считается устаревшим, но до сих пор используется некоторыми веб-приложениями. Дополнительная информация о meta-файлах: http://www.w3.org/pub/WWW/Daemon/User/Config/General.html#MetaDir

MetaFiles on|off [h]

Включает - выключает работу модуля в данном расположении.

MetaDir directory [h]

Определяет директорию, которую Apache будет просматривать в поиске meta-файлов.

MetaSuffix suffix [h]

Определяет расширение файлов, которое будет использоваться для поиска meta-информации о файле запроса.

mod_expires - управляющий выдачей HTTP заголовков 'Expires' по заданным критериям

ExpiresActive on|off [AVDH]

Активирует работу модуля в данном расположении

ExpiresByType mime-type A|M seconds [AVDH]

ExpiresByType mime-type "access|modification [plus]{ num years|months|weeks|days|hours|minutes|seconds}*" [AVDH]

ExpiresDefault A|Mseconds [AVDH]

ExpiresDefault "access|modification [plus]{ num years|months|weeks|days|hours|minutes|seconds}*" [AVDH]

Устанавливает выдачу заголовка Expires (для выбранного MIME типа в случае *ByType). Синтаксис вполне интуитивно - понятный. Ключевому слову 'access' соответствует так же слово 'now'.

mod_include - поддерживающий включения на стороне сервера - SSI

Несмотря на то, что в данном модуле всего одна, редко применяемая директива применение его очень распространено.

Модуль реализует обработчик 'server-parsed', который в самом простом случае активируется следующим образом:

AddType text/html .shtml

AddHandler server-parsed .shtml

После этого, в каталогах для которых установлено 'Options +Includes', в файлах с расширением '.shtml' разрешается использовать специальные SSI-конструкции, общий вид которых:

<!--#element attribute1="value1" attribute2='value2' ... -->

config

Директива, настраивающая разбор SSI. Может использовать атрибуты: 'errmsg' - сообщение, которое будет передаваться броузеру при обнаружении ошибки в SSI документе; 'sizefmt' - параметр указывающий формат вывода размера файлов; 'timefmt' - формат вывода даты и времени аналогичный системной функции strftime(3) и утилиты date(1).

echo

Директива вывода в документ переменной окружения, имя которой передаётся в атрибуте 'var'.

exec

Директива, выполняющая команду оболочка (атрибут 'cmd') или cgi-скрипт (атрибут 'cgi'). Для скриптов правильнее использовать 'include virtual' директиву.

fsize

Директива показа размера файла (атрибут 'file') или страницы с относительным URL (атрибут 'url'). Для текущего URL разрешено использовать '/'

flastmod

Директива показа даты-времени последней модификации файла. Формат вывода берётся из 'config timefmt', атрибуты аналогичны 'fsize'

include

Директива включения в обрабатываемый документ других документов. При использовании атрибута 'file' вставляет файл c указанным относительным именем, причём имя не может начинаться ни с '/' (быть абсолютным) ни с '../'. Рекомендуется использовать эту директиву с атрибутом 'virtual', значение которого будет интерпретироваться как адрес внутри данного файла (при этом корневой - '/' - URI будет указывать на корневой URI сайта). Ограничения, накладываемые на 'virtual' так же не позволяют использовать схему URL (http://, ftp://...) или имя сайта. Только при включении через 'virtual' возможны многоступенчатые вложения.

printenv

Выдаёт все переменные окружения вместе с их содержимым существующие на момент выполнения директивы. Конечно возможно было бы использовать например <!--exec cmd="set">, но при этом вывод будет содержать излишние переменные shell устанавливаемые во время запуска exec.

set

Изменяет (устанавливает) значение переменной SSI. Имя переменной задаётся в атрибуте 'var', а её значение - в 'value'.

Во время разбора SSI страницы в её контексте устанавливаются следующие служебные переменные: 'DATE_GMT', 'DATE_LOCAL' - время поступления запроса по Гринвичу и по местному времени, 'DOCUMENT_NAME' - имя файла, запрошенного документа без каталогов, 'DOCUMENT_URI' - адрес документа запрошенного пользователем без "escape-последовательностей", 'LAST_MODIFIED' - дата последней модификации запрошенного пользователем документа.

В контексте страницы непременно наравне с этими переменными предоставляется доступ и ко всем другим, стандартным для CGI переменным окружения. Эти переменные, так и назначаемые директивой 'set' пары "переменная - значение" могут быть использованы во всех директивах SSI. В директиве 'echo' необходимо просто указать имя переменной в атрибуте 'var', а в других директивах, при необходимости подстановки переменной внутри атрибута используют её имя с предшествующим знаком доллара. Например если имя переменной - MyVarName, то для её вставки используют $MyVarName, либо ${MyVarName} для отделения переменной от последующих символов (в общем то эти правила похожи на работу с переменными shell и perl скриптов)

if, else, elif, endif

Директивы конструирования условных конструкций. В 'if' и 'elif' используется атрибут 'expr' определяющий условие. Очень сложно в нескольких строках объяснить детали построения условных выражений внутри SSI. Это подробно описано в apache-manual к которому настоятельно рекомендуется обращаться всем, собирающимся серьёзно познать детали работы веб-сервера. Приведём лишь самый простой пример из документации:

                <!--#if expr="\"$DOCUMENT_URI\" = \"/foo/file.html\"" -->
                in foo
                <!--#elif expr="\"$DOCUMENT_URI\" = \"/bar/file.html\"" -->
                in bar
                <!--#else -->
                in neither
                <!--#endif -->

XBitHack on|off|full [AVDh]

Данная директива конфигурирования включает-выключает (on и full - off) проверку "бита запуска" (execute bit) в правах файлов. При том 'on' требует наличия права запуска у владельца файла а 'full' позволяет использовать право запуска группы владельца. Директива влияет на обработку файлов с MIME-типом text/html.

mod_cgi - позволяет запускать CGI приложения под управлением Apache

Как и в случае mod_include главное действие этой директивы - установка обработчика cgi-script,который указывает на необходимость запуска файлов в среде модуля и возврата клиенту (через ядро Apache) результатов работы скрипта.

ScriptLog filename [A]

Открывает (создаёт если это необходимо) файл для записи сообщений о запуске и об ошибках при работе со скриптами cgi. Работа с файлом ведётся от имени пользователя заданного в директиве 'User', поэтому необходимо быть внимательными с правами на файлы и каталоги.

ScriptLogLength bytes [A]

Определяет лимит размера лога сообщений mod_cgi в байтах. При достижении лимита запись в лог прекращается.

ScriptLogBuffer bytes [A]

Указывает размер служебного буфера для сообщений cgi. По умолчанию буфер равен 1024-м байтам.

mod_actions - разрешающий создавать собственные обработчики на основе скриптов CGI

Action action-type|MIME-type cgi-script [AVDh]

Сообщает Apache о создании нового обработчика или о привязке определённого скрипта ко всем документам заданного MIME типа.Указания на обрабатываемый файл передаются CGI через переменные окружения 'PATH_INFO' и 'PATH_TRANSLATED'.

Script method cgi-script [AVD]

Переопределяет метод (GET, POST, DELETE или другие) запуском определённого CGI скрипта. Запрошенные URL передаются через переменные окружения 'PATH_INFO' и 'PATH_TRANSLATED'.

mod_status - включающий обработчик показа информации о работе сервера

Модуль инсталлирует обработчик server-status, который необходимо активизировать директивой SetHandler для определённого URL сервера (внутри секции Location например). Данный модуль работает только если Apache запущен в stadalone а не в inetd режиме.

ExtendedStatus on|off [A]

Включает расширенные возможности показа данных статуса, необходимых только в определённых случаях.



[18] Под словами «веб-сервер» в данном случае и далее понимается набор программного обеспечения Apache.

[19] Процессу (команде, сервису) httpd соответствует процесс httpd-perl из пакета apache-mod_perl. Далее рассмотрены вопросы совместного запуска httpd и httpd-perl.