Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Онощенко_КП_ИПП.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
244.25 Кб
Скачать

5. Фильтры

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

Во втором Apache обработчик контента расширен путем добавления фильтров, которые могут манипулировать данными, посылаемыми клиенту. И несколько модулей могут параллельно обрабатывать один клиентский запрос. Фильтры могут быть назначены еще на этапе определения типа контента.

Фильтры бывают входящими (input filters) и исходящими (output filters).

Обрабатываемые данные разбиваются на секции (brigade), которые в свою очередь разбиваются на сегменты (bucket). Один фильтр обрабатывает один сегмент, после чего передает его по цепочке на следующий фильтр.

Кроме деления на входящие и исходящие, фильтры можно разбить еще на три категории:

  1. Контент-фильтры.

  2. Протокольно-кодировочные фильтры.

  3. Сетевые фильтры.

В начало

6. Конфигурация Apache

Для конфигурации Apache есть 4 основных подхода:

  1. Компиляция / инсталляция: сборка из исходников позволяет выбрать необходимые модули, установить нужные флаги, пути и т. д.

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

  3. Глобальные конфигурационные файлы: главный файл по умолчанию называется httpd.conf.

  4. Локальные конфигурационные файлы: использование .htaccess.

Конфигурационные директивы в файле httpd.conf можно разбить на 3 категории:

  1. Директивы, контролирующие общий процесс работы.

  2. Директивы виртуальных хостов.

  3. Настройки виртуальных хостов.

К директивам первой группы относятся <Directory>, <DirectoryMatch>, <Files>, <FilesMatch>, <Location>, <LocationMatch>.

Они применяются в привязке к конкретной файловой структуре либо к URL. В первом случае это <Directory>, во втором — <Location>. Apache может обслуживать одновременно несколько веб-сайтов с различными именами, реализуя виртуальный хостинг, что делается на основе директивы <VirtualHost>. Для того, чтобы изменения в главном конфиге вступили в силу, сервер должен быть перезапущен.

Локальная конфигурация реализована на основе .htaccess. Имя этого файла можно изменить в секции AccessFileName. Изменения в файле .htaccess вступают в силу немедленно, без перезапуска, его действие распространяется на каталог, в котором он лежит, со всеми вложенными подкаталогами. Избыточное использование .htaccess может повлиять на производительность сервера.

Содержимое основного конфига httpd.conf можно разделить на 5 секций:

  1. Глобальные директивы.

  2. <VirtualHost> — применимы к выиртуальным серверам.

  3. <Directory>, <DirectoryMatch> — применимы к каталогам.

  4. <Files>, <FilesMatch> — применимы к файлам.

  5. <Location>, <LocationMatch> — применимы к URL.

Директива может иметь несколько параметров, тип параметров может различаться.

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

Например, директива

LoadModule foo_module modules/mod_foo.so

будет обработана mod_so, в этой команде 2 аргумента — имя загружаемого модуля и имя файла.

Следующая директива будет обработана ядром:

DocumentRoot /usr/local/apache/htdocs

Следующая директива будет обработана модулем mod_env, будет установлена переменная окружения:

SetEnv hello ”Hello, World!”

Контейнер — специальная форма директивы с использованием скобок, которая имеет свой внутренний контекст. Например, контейнер <VirtualHost>:

<VirtualHost 10.31.2.139>

ServerName www.example.com

DocumentRoot /usr/www/example

ServerAdmin webmaster@example.com

CustomLog /var/log/www/example.log

</VirtualHost>

Содержимое локального файла .htaccess можно разделить также на 5 секций:

  1. AuthConfig — контроль авторизации.

  2. Limits — контроль доступа.

  3. Options — конкретные настройки каталогов.

  4. FileInfo — установка атрибутов для документов.

  5. Indexes — индексация каталогов.

В начало

7. Apache API

Apache API включает в себя все возможности веб-сервера. Модульная архитектура позволяет встраивать новые модули на основе этого функционала. Ядро дает любому модулю большой выбор в вызове функций. Эти функции могут быть вызваны со специальными структурами в качестве параметров и могут возвращать специальные структуры. Базовые структуры заранее определены.

Вторая версия Apache уже включает в себя весь существующий функционал первой версии Apache, плюс имеется новый функционал в форме Apache Portable Runtime (APR).

Ядро управляет распределением памяти и следит за ее освобождением после того, как модуль закончил свою работу. Вся память выделяется в ядре. Память организована в форме пула (pool), каждый пул привязан к определенной задаче и имеет свой жизненный цикл. Имеется 3 главных пула — серверный пул, пул коннектов, пул запросов. Любой модуль может создать свой пул произвольного формата. Модуль может попросить ядро в любой момент создать пул и в любой момент его удалить.

Apache также управляет выделением памяти под массивы и управляющую хеш-таблицу.

Функции, с которыми работают модули, имеют параметры и структуры предопределенного типа, тип этот модули менять не имеют права. Наиболее важные внутренние типы данных Apache:

  1. request_rec — одна из наиболее важных структур, включает информацию о запросе. В этой структуре находится ссылка на пул запросов, а также другая структура с различными форматами URL для их трансляции.

  2. server_rec – в основном содержатся конфигурационные данные, а также имя сервера, порт, таймаут и т.д.

  3. connection_rec — содержится информация о коннекте. На один коннект может приходиться несколько запросов. Время жизни коннекта может превышать время жизни запроса. Здесь также хранится информация о клиенте.

Функции дают возможность модулям манипулировать своими структурами данных. Системные вызовы находятся в компетенции ядра. Имеются функции для создания процессов, открытия коммуникационных каналов для внешних процессов, отсылки данных клиенту, прикладные функции типа работы со строками и т. д.

Все функции можно разбить по категориям:

  1. Управление памятью.

  2. Управления процессами.

  3. Управление массивами.

  4. Управление таблицами.

  5. Управление строками.

  6. Управление сетью.

  7. Динамическая линковка.

  8. Логирование.

  9. Управление мьютексами.

  10. Авторизация.

Во второй версии Apache появился Apache Portable Runtime — дополнительный API функционал. Он включает:

  1. File I/O + Pipes.

  2. Дополнительное обслуживание памяти.

  3. Mutex + Locks, Asynchronous Signals.

  4. Network I/O.

  5. Многозадачность, в том числе потоки (threads).

  6. Dynamic Linking (DSO).

  7. Time.

  8. Authentication.

APR — это по сути целый новый фреймворк для веб-сервера.

В начало

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]