Apache HTTP Server – безплатен уеб сървър (HTTPD). Apache е междуплатформен софтуер, поддържа операционни системи Linux, BSD, Mac OS X, Microsoft Windows, Novell NetWare, BeOS.
Основните предимства на Apache са надеждността и гъвкавостта на конфигурацията. Той позволява да се свързват външни модули за предоставяне на данни, да се използва СУБД за удостоверяване на потребителите, да се модифицират съобщенията за грешки и т.н….. Той поддържа IPv6.
Архитектура Apache HTTP Server
Ядрото на Apache включва основни функционалности, като например работа с конфигурационни файлове, протокола HTTP и системата за зареждане на модули. Ядрото (за разлика от модулите) е изцяло разработено Apache Software Foundation, без участието на програмисти от трети страни.
Теоретично ядрото apache може да функционира в чистия си вид, без да използва модули. Функционалността на такова решение обаче е изключително ограничена.
Ядрото на Apache е изцяло написано на езика за програмиране C.
Системата за конфигуриране Apache се основава на текстови конфигурационни файлове. Тя има три условни нива на конфигурация:
Има собствен език на конфигурационните файлове, базиран на блокове от директиви. Практически всички параметри на ядрото могат да се променят чрез конфигурационни файлове, до и включително управлението MPM.. Повечето модули имат свои собствени параметри.
Някои модули използват конфигурационни файлове на операционната система (например /etc/passwd и /etc/hosts).
Освен това параметрите могат да се задават чрез клавиши от командния ред.
За уеб сървъра Apache има много модели на симетрична мултипроцесорна обработка. Ето основните от тях:
Apache HTTP Server поддържа модулност. Съществуват повече от 500 модула, изпълняващи различни функции. Някои от тях са разработени от екипа на Apache Software Foundation, но по-голямата част от тях са разработени от отделни open source- разработчици.
Модулите реализират такива неща като:
Apache има вграден механизъм за виртуални хостове. Той ви позволява да обслужвате изцяло на един IP-адрес множество сайтове (имена на домейни), като за всеки от тях показвате собствено съдържание.
За всеки виртуален хост можете да задавате собствени настройки на ядрото и модула, да ограничавате достъпа до целия сайт или до отделни файлове. Някои MPM, като например Apache-ITK, ви позволяват да стартирате процеса httpd за всеки виртуален хост с отделни идентификатори uid и guid.
Също така има модули, които ви позволяват да разглеждате и ограничавате ресурсите на сървъра (CPU, RAM, трафик) за всеки виртуален хост.
Функционалност Apache HTTP Server
Има много модули, които добавят към Apache поддръжка на различни езици за програмиране и системи за разработка.
Те включват:
Освен това Apache поддържа механизмите CGI и FastCGI, което позволява изпълнението на програми на почти всички езици за програмиране, включително C, C++, Lua, sh, Java.
Apache има различни механизми за осигуряване на сигурност и диференциране на достъпа до данни. Основните от тях са: 1:
Някои модули на MPM-включват възможност за изпълнение на всеки процес на Apache с помощта на различни uid и gid със съответните потребители и потребителски групи.
Също така има механизъм suexec, който се използва за стартиране на скриптове и CGI-приложения с потребителски права и идентичности.
За осъществяване на криптиране на данните, предавани между клиента и сървъра, се използва механизмът SSL, реализиран чрез библиотеката OpenSSL., за удостоверяване на уеб сървъраизползват се сертификати X.509.
Съществуват външни функции за сигурност, напр mod_security.
От 2.0 вече е възможно сървърът да определя локала на потребителя. Съобщенията за грешки и събития, изпращани към браузъра, вече са на няколко езика и използват технологията SSI.
Също така е възможно да се приложат сървърни средства за показване на различни страници за потребители с различни локали. Apache поддържа много кодировки, включително Unicode, което позволява да се използват страници, създадени във всяка кодировка и на всеки език.
Администраторът може да задава потребителски страници и обработващи програми за всички HTTP грешки и събития, като например 404 (Not Found ) или 403 (Forbidden). Възможно е също така да се изпълняват скриптове и да се показват съобщения на различни езици.
Във версиите 1.3 и по-стари е реализиран механизъм Server Side Includes, който позволява динамично генериране на HTML-документи от страна на сървъра.
Управлението на SSI се извършва от модула mod_include, включен в основния пакетApache.


