Apache HTTP Server

Apache – otwarty serwer HTTP dostępny dla wielu systemów operacyjnych (m.in. UNIX, GNU/Linux, BSD, OS X, Microsoft Windows).

Popularność 
Apache jest jednym z szeroko stosowanych serwerów HTTP w Internecie. W maju 2020 (według serwisu Netcraft) jego udział wśród wszystkich serwerów wynosił ponad 25%. Według nieistniejącego już serwisu Amudom, wśród polskich domen ok. 53% serwerów używało Apache w 2017 roku.

Statystyki wykorzystania serwerów WWW (dane z maja 2020 według serwisu Netcraft):

Technika używana przez Netcraft polegająca na badaniu odpowiedzi serwerów ma pewne ograniczenia i może dawać zaburzone statystyki, ponieważ jest w stanie ustalić jedynie serwer zewnętrzny. Jeśli właściwy serwer jest za serwerem proxy, to może nie być to uwzględnione.

Cechy serwera i obsługiwane moduły 
 wielowątkowość
 skalowalność
 bezpieczeństwo
 Kontrola dostępu/uwierzytelnianie: mod_authz_host
 CGI
 Proxy typu HTTP, Apache JServe Protocol, FTP, CONNECT: mod_proxy*
 SSI: mod_include
 Content-Negotation: mod_negotation
 Moduł URL-Rewriting: mod_rewrite
 SSL: mod_ssl
 możliwość osadzania interpreterów języków skryptowych, np. mod perl, mod_php czy mod_python

Historia 
Serwer Apache wywodzi się z kodu serwera NCSA HTTPd napisanego przez Roba McCoola, pracownika NCSA.
 kwiecień 1995 – wersja 0.6.2 pierwsza oficjalna wersja serwera HTTP Apache.
 sierpień 1995 – wersja 0.8.8 dodanie standardowego API i modularyzacja kodu.
 grudzień 1995 – wersja 1.0 ulepszenie modułów serwera, napisanie dokumentacji, przeniesienie serwera na wiele różnych platform systemowych.
 2000 – wersja 1.3 wprowadziła m.in. dynamiczne ładowanie modułów, wsparcie dla Windows NT i Windows 2000.
 2002-2013 – wersja 2.0 to wsparcie wielowątkowości, bardziej elastyczne API dla modułów, a także wsparcie IPv6 i UTF-8 w nazwach plików. Wydane zostały również nowe moduły między innymi do szyfrowania (mod_ssl) czy do kompresji danych (mod_deflate).
 2005-2017 – wersja 2.2 dodała m.in. nowe moduły do cachowania, proxy AJP (do serwera Tomcat) i obsługę plików większych niż 2 GB.
 2012-teraz – wersja 2.4 zmienia sposób konfiguracji ograniczenia dostępu (stare dyrektywy Deny, Allow należy zastąpić Require); sekcje If, Else umożliwiają warunkowe konfiguracje na podstawie konkretnego żądania (podobnie jak w poprzednich wersjach za pomocą mod_rewrite); od wersji 2.4.36 wspiera TLS 1.3.

Trwają prace nad nową wersją oznaczoną roboczo 2.5, ostateczna wersja będzie miała oznaczenie 2.6 lub 3.0.

Konfiguracja 
Najnowsze wersje serwera Apache posiadają interfejs graficzny GUI. Program Apache parsuje plik konfiguracyjny httpd.conf (oraz inne zdefiniowane przez użytkownika, bądź sam program).

Plik konfiguracyjny dystrybucji Apache z serii 2.0 zawiera sekcje:

Global Environment 
 środowisko serwera
 podstawowe parametry sieciowe
 lista dołączanych modułów

Main server configuration 
 położenie dokumentów
 połączenie
 aliasy
 określenie dostępu do zasobów
 formaty i położenie dzienników serwera
 moduły CGI
 opcje automatycznego indeksowania katalogów
 Content Negotation (ang. negocjacja treści)
 własne dokumenty błędów serwera (dyrektywy ErrorDocument)
 konfiguracja modułu mod_proxy

Virtual Hosts 
 odwrotny DNS
 lista i konfiguracja ewentualnych hostów wirtualnych obsługiwanych przez maszynę

Niektóre większe moduły (np. mod_SSL) mogą posiadać własne sekcje w pliku httpd.conf bądź oddzielny plik dla własnych ustawień. Aby zmiany dokonane w plikach konfiguracyjnych zostały uwzględnione, konieczne jest zrestartowanie procesu serwera.

Zobacz też 
 nginx
 Perl
 WebDAV
 .htaccess
 .htpasswd
 .htgroup
 ApacheBench
 Serwer
 PHP
 MySQL

Przypisy

Linki zewnętrzne 
 Strona domowa projektu
 Dokumentacja Apache 2.4

Apache Software Foundation
Oprogramowanie na licencji Apache License
Serwery WWW
Wolne oprogramowanie napisane w C