Apache
Apache HTTP-сервер (сокращение от англ. a patchy server) — свободный веб-сервер. Apache является кроссплатформенным ПО, поддерживая операционные системы GNU/Linux, BSD, Mac OS, Microsoft Windows, Novell NetWare, BeOS. Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6. Недостатком наиболее часто называется отсутствие удобного стандартного интерфейса для администратора.
- Ядро
- Система конфигурации
- Система модулей
- Механизм виртуальных хостов
- Функциональные возможности
- Безопасность
- Интернационализация
- Обработка событий
Ядро
Ядро Apache включает в себя основные функциональные возможности, такие как обработка конфигурационных файлов, протокол HTTP и система загрузки модулей. Ядро (в отличие от модулей) полностью разрабатывается Apache Software Foundation, без участия сторонних программистов. Теоретически, ядро apache может функционировать в чистом виде, без использования модулей. Однако, функциональность такого решения крайне ограничена. Ядро Apache полностью написано на языке программирования C.
Система конфигурации
Система конфигурации Apache основана на текстовых конфигурационных файлах. Имеет три условных уровня конфигурации:
- Конфигурация сервера (httpd.conf)
- Конфигурация виртуального хоста (httpd.conf c версии 2.2 extra/httpd-vhosts.conf)
- Конфигурация уровня директории (.htaccess)
Система модулей
Apache HTTP Server поддерживает модульность. Существует более 400 модулей[6], выполняющих различные функции. Часть из них разрабатывается командой Apache Software Foundation, но основное количество — отдельными open source-разработчиками. Модули могут быть как включены в состав сервера в момент компиляции, так и загружены динамически, через директивы конфигурационного файла. В модулях реализуются такие вещи, как:
- Поддержка языков программирования
- Добавление функционала
- Исправление ошибок или модификация основных функций
- Усиление безопасности
Механизм виртуальных хостов
Apache имеет встроенный механизм виртуальных хостов. Он позволяет полноценно обслуживать на одном IP-адресе множество сайтов (доменных имён), отображая для каждого из них собственное содержимое. Для каждого виртуального хоста можно указать собственные настройки ядра и модулей, ограничить доступ ко всему сайту или отдельным файлам. Некоторые MPM, например Apache-ITK позволяют запускать процесс httpd для каждого виртуального хоста с отдельными идентификаторами uid и gid. Также, существуют модули, позволяющие учитывать и ограничивать ресурсы сервера (CPU, RAM, трафик) для каждого виртуального хоста.
Функциональные возможности
Интеграция с другим ПО и языками программирования
Существует множество модулей, добавляющих к Apache поддержку различных языков программирования и систем разработки. К ним относятся:
- PHP (mod_php)
- Python (mod_python, mod_wsgi)
- Ruby (apache-ruby)
- Perl (mod_perl)
- ASP (apache-asp)
Безопасность
Apache имеет различные механизмы обеспечения безопасности и разграничения доступа к данным. Основными являются:
- Ограничение доступа к определённым директориям или файлам
- Механизм авторизации пользователей для доступа к директории по методу HTTP-Авторизации (mod_auth_basic) и digest-авторизации (mod_auth_digest)
- Ограничение доступа к определённым директориям или всему серверу, основанное на IP-адресах пользователей
- Запрет доступа к определённым типам файлов для всех или части пользователей, например запрет доступа к конфигурационным файлам и файлам баз данных
- Существуют модули, реализующие авторизацию через СУБД или PAM
Интернационализация
Начиная с версии 2.0 появилась возможность определения сервером локали пользователя. Сообщения об ошибках и событиях, посылаемые браузеру, теперь представлены на нескольких языках и используют SSI технологию. Также, можно реализовать средствами сервера отображение различных страниц для пользователей с различными локалями. Apache поддерживает множество кодировок, в том числе Unicode, что позволяет использовать страницы, созданные в любых кодировках и на любых языках.
Обработка событий
Администратор может установить собственные страницы и обработчики для всех HTTP ошибок и событий, таких как 404 (Not Found) или 403 (Forrbiden). В том числе существует возможность запуска скриптов и отображения сообщений на разных языках.