
-
server config - директива применяется при конфигурировании основного сервера, т.е. относится ко всем поступающим запросам или ко всему серверу как таковому. Все директивы, не попадающие в ниже описанные контексты, находятся к контексте server config.
-
Virtual host - директива применяется внутри раздела, определяемого директивой
-
<VirtualHost имя_виртуального_сервера>
-
.....
-
#директивы, находящиеся здесь относятся только к запросам, в
-
#заголовке Host которых указан данный виртуальный сервер
-
.....
-
</VirtualHost>
-
Сама по себе директива VirtualHost может находиться только в контексте server-config.
-
directory - директива применяется внутри разделов типа
-
<Directory путь_к_каталогу>
-
....
-
#директивы, находящиеся здесь относятся только к запросам файлов,
-
#находящихся в указанном каталоге (или его подкаталогах); путь
-
#отсчитывается от каталога, указанного директивой DocumentRoot
-
....
-
</Directory>
-
-
<Location начало_URI>
-
....
-
#директивы, находящиеся здесь относятся только к запросам URI, #начинающихся со строки, указанной в директиве Location
-
....
-
</Location>
-
-
<Files рег._выражение_для_файлов>
-
....
-
#директивы, находящиеся здесь относятся только к запросам файлов, #имена которых удовлетворяют указанному регулярному выражению
-
....
-
</Files>
-
Сами по себе директивы Location, Directory и Files могут находиться как в контексте server config, так и в контексте virtual host. Более того, директива Files может находиться внутри раздела Directory, а также в контексте htaccess.
-
htaccess - директива применяется в файле .htaccess (имя файла начинается с точки), расположенном в каком-либо каталоге внутри дерева документов сервера. Директива срабатывает для всех запросов файлов из этого каталога и его подкаталогов (если там не находится другой файл .htaccess - в этом случае последний будет иметь приоритет). Директивы файла .htaccess имею приоритет над директивами раздела <Directory ...>...</Directory>, относящимися к тому же каталогу.
Если одна и та же директива в разных контекстах имеет разные значения, то действует значение в наиболее узком применимом к данному запросу контексте.
Управление доступом, аутентификацией и авторизацией
Apache предоставляет следующие возможности по контролю доступа к ресурсам веб-сервера:
-
контроль адреса клиента,
-
аутентификация клиента по имени и паролю,
-
авторизация - т.е. определение прав опознанного клиента на доступ к тому или иному ресурсу.
Для реализации этого механизма применяются директивы allow, deny. order, AuthName, AuthType, AuthUserFile, AuthGroupFile, require, satisfy.
Возможности контроль доступа могут быть существенно расширены дополнительными модулями, написанными c использованием Perl-API (модуль mod_perl).
Выполнение CGI-скриптов
На стадии разбора URI сервер определяет файл, который был запрошен клиентом. Если на стадии определения MIME-типа документа было обнаружено, что файл должен быть интерпретирован как исполнимая программа, то для генерации ответа Apache запускает этот файл, в соответствии со спецификацями интерфейса CGI.
SSI (Server Side Includes)
В Apache реализован механизм SSI, который представляет собой разбор HTML-документов на стороне сервера с целью обнаружения в документе и выполнения директив, добавляющих в документ дополнительную информацию. Директивы могут вставлять в HTML-документ другой HTML-файл или результат работы CGI-программы; вставлять характеристики документа (размер файла, дату последней модификации), текущее время и т.п.
Перекодировка кириллицы
Модуль mod_charset производит переобразование кириллических документов в кодировку, требуемую клиенту. При этом сначала рассматриваются заголовки запроса (Accept-Charset), потом, если требуемую кодировку определить не удалось, - конфигурационные директивы модуля mod_charset (CharsetSelectionOrder и др.), а в случае неудачи документ возвращается в кодировке, определенной директивой CharsetDeafult.
Кодировка, в которой документ хранится на диске, задается директивой CharsetSourceEnc, которую можно применять во всех конфигурационных контекстах.
Perl API и модуль mod_perl
Модуль mod_perl реализует интерфейс API к серверу Apache на языке Perl, что позволяет модифицировать поведение сервера на любой фазе обработки запроса в соответствии с конкретными требованиями пользователя (например производить аутентификацию не по файлу с именами пользователей и их паролями, а по базе данных). Кроме того, модуль позволяет существенно ускорить исполнение CGI-скриптов, написанных на Perl: теперь не запускается отдельного процесса Perl-интепретатора для каждого скрипта; интерпретатор находится внутри процесса веб-сервера; более того, однажды исполненный скрипт кэшируется в компилированном виде.
Apache и Java
Модуль mod_jserv является интерфейсом сервера Apache к исполнителю сервлетов (servlet engine), написанных на языке Java. Интерфейс jserv сходен по функциональности с CGI, но обладает повышенной гибкостью.
Apache и SSL
Модуль mod_ssl реализует в Apache слой SSL, осуществляющий шифрование всего потока данных между клиентом и сервером. Для всех остальных частей веб-сервера модуль mod_ssl является прозрачным. Для работы в этом режиме, требуется броузер, поддерживающий мехнизм SSL (этому условию удовлетворяют все современные распространенные броузеры).
Установка и работа с сервером
Установка сервера осуществляется в следующей последовательности:
-
распаковать дистрибутив Apache;
-
если требуется установка дополнительных модулей (например, mod_perl, mod_jserv, mod_ssl) - распаковать их дистрибутивы в том же каталоге; при конфигурировании сервера следовать дополнительным инструкциям по установке модулей, приведенных в их дистрибутивах;
-
сконфигурировать исходный код сервера командой
-
./configure --prefix=/путь/установки/Apache
-
(возможны различные дополнительные ключи, свзяанные с добавлением или удалением модулей);
-
скомпилировать и установить сервер командами "make" и "make install".
Все компоненты сервера устанавливаются в дерево, корнем которого является каталог, указанный в параметре "--prefix"; вне этого дерева никакие компоненты программы не располагаются (это может быть неверно для дополнительных модулей - см. документацию к этим модулям). Этот же каталог должен быть значением конфигурационной директивы ServerRoot. Конфигурационный файл httpd.conf находится в каталоге ServerRoot/conf.
Запуск, перезапуск и останов сервера выполняются командой ServerRoot/bin/apachectl с параметрами start, stop, restart, graceful.