Apache HTTP Server

Apache HTTP Server
Apache HTTP server logo (2019-present).svg
Basisdaten
Entwickler Apache Software Foundation[1]
Erscheinungsjahr 1995
Aktuelle Version 2.4.54[2]
(8. Juni 2022)
Betriebssystem eingeschränkt plattformunabhängig
Programmiersprache C[3][4][5][6]
Kategorie Webserver
Lizenz Apache-Lizenz, Version 2.0[7], Apache-Lizenz, Version 1.1[8]
projects.apache.org/project.html?httpd-http_server

Der Apache HTTP Server [əˈpætʃi] ist ein quelloffenes und freies Produkt der Apache Software Foundation und einer der meistbenutzten Webserver im Internet. Neben Faktoren wie Leistungsfähigkeit, Erweiterbarkeit, Sicherheit, Lizenzkosten-freiheit und dem Support durch eine sehr große Community ist seine langjährige Verfügbarkeit für unterschiedlichste Betriebssysteme einer der Gründe für seine hohe Verbreitung, am häufigsten wird er als LAMP-System eingesetzt.

Geschichte

Eine Gruppe von acht Entwicklern begann 1994 den Webserver NCSA HTTPd zu erweitern. Dies waren im Einzelnen: Brian Behlendorf, Roy T. Fielding, Rob Hartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert S. Thau und Andrew Wilson mit Unterstützung von Eric Hagberg, Frank Peters und Nicolas Pioch.

Sie gaben dem Ergebnis ihrer Arbeit den Namen Apache HTTP Server und veröffentlichten diesen im April 1995. Er war das Gründungsprojekt der Apache Software Foundation.

Namensherkunft

Der Name wurde aus Respekt vor dem nordamerikanischen Indianerstamm der Apachen gewählt.[10] Nicht korrekt ist, dass der Name ein Homophon von „a patchy server“ sei, was so viel wie „ein zusammengeflickter Server“ bedeuten würde. Diese Deutung entstand durch den Umstand, dass der Apache HTTP Server ursprünglich eine gepatchte Erweiterung des alten NCSA HTTP Servers war.[11]

Eigenschaften und Funktionen

Neben Unix und Linux unterstützt Apache Win32, NetWare sowie eine Vielzahl weiterer Betriebssysteme. In Apache 2.4 wurde der Support für ältere, lange schon nicht mehr weiter entwickelte Betriebssysteme wie BeOS, TPF und A/UX beendet.[12] In Version 2.0 wurde die Stabilität und Geschwindigkeit des Servers – vor allem auf Nicht-Unix-Systemen – erheblich verbessert: Die Bibliothek Apache Portable Runtime (APR) stellt eine Verallgemeinerung wichtiger Systemaufrufe zur Verfügung, sodass die individuellen Stärken des jeweiligen Betriebssystems ausgenutzt werden können. Hinzu kommen verschiedene Multiprocessing-Module (MPM), die je nach Plattform unterschiedliche Lösungen für die gleichzeitige Bedienung mehrerer Client-Anfragen anbieten: Beispielsweise setzt das MPM prefork für klassische Unix-Systeme auf Forking von Prozessen, während mpm_winnt für die unter Windows empfehlenswerteren Threads optimiert ist.

Der Apache-Webserver ist modular aufgebaut: Durch entsprechende Module kann er beispielsweise die Kommunikation zwischen Browser und Webserver verschlüsseln (mod_ssl), als Proxyserver eingesetzt werden (mod_proxy) oder komplexe Manipulationen von HTTP-Kopfdaten (mod headers) und URLs (mod rewrite) durchführen.

Der Apache bietet die Möglichkeit, mittels serverseitiger Skriptsprachen Webseiten dynamisch zu erstellen. Häufig verwendete Skriptsprachen sind PHP, Perl oder Ruby. Weitere Sprachen sind Python, JavaScript (z. B. V8CGI), Lua, Tcl und .NET (mit ASP.NET oder Mono). Diese sind kein Bestandteil des Webservers, sondern müssen ebenfalls entweder als Module eingebunden werden oder über das CGI angesprochen werden, da Apache im Gegensatz zu beispielsweise nginx modulbasiert ist. Die Module können jederzeit aktiviert oder deaktiviert werden. Über das bei der Apache-Installation enthaltene mod_include kann Server Side Includes (SSI) ausgeführt werden. Damit ist es möglich, einfache dynamische Webseiten zu erstellen und den Verwaltungsaufwand von statischen Webseiten zu minimieren.

Der Apache HTTP Server ist, wie alle Programme der Apache Software Foundation, eine freie Software. Derzeit wird noch die stabile Version 2.4.x unterstützt und somit beispielsweise mit Sicherheitsupdates versorgt. Die Apache-Entwickler empfehlen die Version 2.4.x für den Produktiveinsatz.[13]

Dokumentation

Zum Webserver gibt es ein Handbuch. Einige Distributionen (z. B. Ubuntu[14]) liefern es als eigenständiges Programmpaket (zum Package apache2 gibt es ein Package apache2-doc). Das Handbuch wird je nach Sprachkonfiguration des Webbrowsers, die er im Feld Accept-Language des HTTP übermittelt, in der passenden Sprache ausgeliefert sofern diese verfügbar ist.

Distributionen

Der Apache HTTP Server ist in fast allen Linux-Distributionen und in macOS standardmäßig enthalten. Eine beliebte Entwicklungs-Distribution für Windows, Linux und Mac OS X ist XAMPP.

Wichtige Versionen

  • Apache 1.x: Diese Version wurde erstmals im Jahre 1995 veröffentlicht. Die Weiterentwicklung des letzten Entwicklungszweiges 1.3.x lief im Februar 2010 aus. Seitdem wurde Version 1 nur noch, falls erforderlich, mit Sicherheitsupdates versorgt. Inzwischen ist auch die Versorgung mit Sicherheitsupdates eingestellt.
  • Apache 2.x: Diese Version wurde erstmals im März 2000 veröffentlicht. Von dieser Version wird nur noch der Entwicklungszweig 2.4 mit Sicherheitsupdates und Weiterentwicklungen versorgt.

Versionsübersicht

Legende: Ältere Version; nicht mehr unterstützt Ältere Version; noch unterstützt Aktuelle Version Aktuelle Vorabversion Zukünftige Version

Apache 1

Apache 1.0

Version Veröffentlichung[15]
1.0.0 April 1996

Apache 1.3

Version Veröffentlichung
1.3.0 6. Juni 1998
1.3.1 22. Juli 1998
1.3.2 23. September 1998
1.3.3 9. Oktober 1998
1.3.4 11. Januar 1999
1.3.5 nicht veröffentlicht
1.3.6 24. März 1999
1.3.7 nicht veröffentlicht
1.3.8 nicht veröffentlicht
1.3.9 19. August 1999
1.3.10 nicht veröffentlicht
1.3.11 21. Januar 2000
1.3.12 25. Februar 2000
1.3.13 nicht veröffentlicht
1.3.14 13. Oktober 2000
1.3.15 nicht veröffentlicht
1.3.16 nicht veröffentlicht
1.3.17 29. Januar 2001
1.3.18 nicht veröffentlicht
1.3.19 1. März 2001
1.3.20 1. Mai 2001
1.3.21 nicht veröffentlicht
1.3.22 12. Oktober 2001
1.3.23 21. Januar 2002
1.3.24 22. März 2002
1.3.25 nicht veröffentlicht
1.3.26 18. Juni 2002
1.3.27 3. Oktober 2002
1.3.28 16. Juli 2003
1.3.29 29. Oktober 2003
1.3.30 nicht veröffentlicht
1.3.31 11. Mai 2004
1.3.32 nicht veröffentlicht
1.3.33 29. Oktober 2004
1.3.34 18. Oktober 2005
1.3.35 1. Mai 2006
1.3.36 17. Mai 2006
1.3.37 28. Juli 2006
1.3.38 nicht veröffentlicht
1.3.39 7. September 2007
1.3.40 nicht veröffentlicht
1.3.41 19. Januar 2008
1.3.42 2. Februar 2010

Apache 2

Apache 2.0

Version Veröffentlichung
2.0.0a1 10. März 2000
2.0.0a2 31. März 2000
2.0.0a3 28. April 2000
2.0.0a4 7. Juni 2000
2.0.0a5 4. August 2000
2.0.0a6 18. August 2000
2.0.0a7 8. Oktober 2000
2.0.0a8 20. November 2000
2.0.0a9 12. Dezember 2000
2.0.14 – 2.0.27 nicht veröffentlicht
2.0.28 13. November 2001
2.0.29 – 2.0.31 nicht veröffentlicht
2.0.32 16. Februar 2002
2.0.33 – 2.0.34 nicht veröffentlicht
2.0.35 5. April 2002
2.0.36 6. Mai 2002
2.0.37 – 2.0.38 nicht veröffentlicht
2.0.39 17. Juni 2002
2.0.40 9. August 2002
2.0.41 nicht veröffentlicht
2.0.42 24. September 2002
2.0.43 3. Oktober 2002
2.0.44 20. Januar 2003
2.0.45 1. April 2003
2.0.46 28. Mai 2003
2.0.47 9. Juli 2003
2.0.48 29. Oktober 2003
2.0.49 19. März 2004
2.0.50 30. Juni 2004
2.0.51 15. September 2004
2.0.52 28. September 2004
2.0.53 7. Februar 2005
2.0.54 17. April 2005
2.0.55 16. Oktober 2005
2.0.56 – 2.0.57 nicht veröffentlicht
2.0.58 1. Mai 2006
2.0.59 28. Juli 2006
2.0.60 nicht veröffentlicht
2.0.61 7. September 2007
2.0.62 nicht veröffentlicht
2.0.63 19. Januar 2008
2.0.64 19. Oktober 2010
2.0.65 10. Juli 2013

Apache 2.2

Version Veröffentlichung
2.2.0 1. Dezember 2005
2.2.1 nicht veröffentlicht
2.2.2 1. Mai 2006
2.2.3 28. Juli 2006
2.2.4 9. Januar 2007
2.2.5 nicht veröffentlicht
2.2.6 7. September 2007
2.2.7 nicht veröffentlicht
2.2.8 19. Januar 2008
2.2.9 14. Juni 2008
2.2.10 14. Oktober 2008
2.2.11 14. Dezember 2008
2.2.12 28. Juli 2009
2.2.13 8. August 2009
2.2.14 3. Oktober 2009
2.2.15 5. März 2010
2.2.16 25. Juli 2010
2.2.17 18. Oktober 2010
2.2.18 11. Mai 2011
2.2.19 21. Mai 2011
2.2.20 20. August 2011
2.2.21 13. September 2011
2.2.22 31. Januar 2012
2.2.23 13. September 2012
2.2.24 26. Februar 2013
2.2.25 10. Juli 2013
2.2.26 18. November 2013
2.2.27 26. März 2014
2.2.29 3. September 2014
2.2.31 17. Juli 2015
2.2.32 13. Januar 2017
2.2.33 nicht veröffentlicht
2.2.34 11. Juli 2017

Apache 2.3

Version Veröffentlichung
2.3.0-alpha – 2.3.3-alpha nicht veröffentlicht
2.3.4-alpha 8. Dezember 2009
2.3.5-alpha 26. Januar 2010
2.3.6-alpha 17. Juni 2010
2.3.7-alpha nicht veröffentlicht
2.3.8-alpha 31. August 2010
2.3.9-alpha nicht veröffentlicht
2.3.10-alpha 21. Dezember 2010
2.3.11-beta 7. März 2011
2.3.12-beta 23. Mai 2011
2.3.13-beta nicht veröffentlicht
2.3.14-beta 9. August 2011
2.3.15-beta 15. November 2011
2.3.16-beta 20. Dezember 2011

Apache 2.4

Version Veröffentlichung
2.4.0 nicht veröffentlicht
2.4.1 17. Februar 2012
2.4.2 17. April 2012
(Linux)
17. Mai 2012
(Windows)
2.4.3 21. August 2012
2.4.4 25. Februar 2013
2.4.5 11. Juli 2013
2.4.6 22. Juli 2013
2.4.7 25. November 2013
2.4.9 17. März 2014
2.4.10 21. Juli 2014
2.4.12 29. Januar 2015
2.4.16 15. Juli 2015
2.4.17 13. Oktober 2015
2.4.18 14. Dezember 2015
2.4.20 11. April 2016
2.4.21 16. Juni 2016
2.4.22 20. Juni 2016
2.4.23 5. Juli 2016
2.4.24 16. Dezember 2016
2.4.25 20. Dezember 2016
2.4.26 19. Juni 2017
2.4.27 11. Juli 2017
2.4.28 5. Oktober 2017
2.4.29 23. Oktober 2017
2.4.33 26. März 2018
2.4.34 16. Juli 2018
2.4.35 22. September 2018
2.4.36 10. Oktober 2018
2.4.37 23. Oktober 2018
2.4.38 17. Januar 2019
2.4.39 27. März 2019
2.4.40 2. August 2019
2.4.41 14. August 2019
2.4.42 19 Mar 2020
2.4.43 26. März 2020
2.4.44 28. Juli 2020
2.4.45 29. Juli 2020
2.4.46 7. August 2020
2.4.47 22. April 2021
2.4.48 17. Mai 2021
2.4.49 15. September 2021
2.4.50 4. Oktober 2021
2.4.51 7. Oktober 2021
2.4.52 20. Dezember 2021
2.4.53 14. März 2022
2.4.54 8. Juni 2022

Module

Ausgabe von mod_status

Der Apache-Server kann mit sogenannten Modulen erweitert werden, die bestimmte Zusatzfunktionen mitbringen und immer mit 'mod_' beginnen (z. B. mod_rewrite, mod_php7.0, mod_ssl). Es gibt Module u. a. für[16]

  • SSL (mod_ssl für OpenSSL, mod_gnutls für GnuTLS)
  • Einbindung und Verwendung von dynamischen Skriptsprachen (u. a. mod_php, mod_perl, mod_python)
  • Unterstützung von zusätzlichen Protokollen (WebDAV: mod_dav, mod_dav_fs, mod_dav_lock, mod_dav_repos)
  • Authentifizierung (mod_auth*)
  • Weiterleitung an andere Server (mod_proxy)
  • Umschreiben und Weiterleitung von Anfragen (mod rewrite; letzteres mit Hilfe von mod_proxy)
  • Änderungen an Headerzeilen (mod_header)
  • Automatische Informationen über Dateitypen (mod_mime, mod_mime_magic)
  • Automatische Erzeugung von Statusberichten (mod_status)
Modul Funktion
mod_access_compat Gruppenzugriffsberechtigung basierend auf dem Hostnamen
mod_actions Führt CGI-Skript abhängig vom MIME-Typ des angefragten Inhalts aus
mod_alias URL-Umleitung
mod_allowmethods Verbietet einzelne HTTP-Methoden (GET, HEAD, POST, PUT, DELETE, TRACE)
mod_asis Sendet Datei ohne neue HTTP-Header zu setzen
mod_auth_basic HTTP-Authentifizierung
mod_auth_digest Authentifizierung mit MD5-Hash
mod_auth_form Formular-Authentifizierung
mod_authn_anon Erlaubt anonymen Zugriff in authentifizierten Bereichen
mod_authn_core Kernmodul für die Authentifizierung
mod_authn_dbd Benutzer-Authentifizierung über eine SQL-Datenbank
mod_authn_dbm Benutzer-Authentifizierung über eine DBM-Datei
mod_authn_file Benutzer-Authentifizierung über Textdateien
mod_authn_socache Verwaltet einen Cache aus Zugangsberechtigungen
mod_authnz_fcgi Allows a FastCGI authorizer application to handle Apache httpd authentication and authorization
mod_authnz_ldap Benutzer-Authentifizierung über LDAP
mod_authz_core Kernmodul für Authentifizierungsmechanismen
mod_authz_dbd Gruppen-Authentifizierung über SQL
mod_authz_dbm Gruppen-Authentifizierung über DBM
mod_authz_groupfile Gruppen-Authentifizierung über Textdateien
mod_authz_host Gruppen-Authentifizierung basierend auf dem Hostnamen
mod_authz_owner Authentifizierung über Besitzerzugehörigkeit von Dateien
mod_authz_user Benutzer-Authentifizierung
mod_autoindex Automatische Verzeichnisanzeige
mod_buffer Anfragen-Pufferung
mod_cache HTTP-Caching-Filter nach RFC 2616
mod_cache_disk Festplattenspeicherung für HTTP Caching-Filter
mod_cache_socache Shared object cache (socache)-basierte Speicherung für den HTTP Caching-Filter
mod_cern_meta CERN Metadaten-Semantik
mod_cgi Ausführung von CGI-Skripten
mod_cgid Ausführung von CGI-Skripten über externen daemon
mod_charset_lite Legt andere Zeichenkodierung fest
mod_data Data-URL nach RFC 2397
mod_dav WebDAV
mod_dav_fs Dateisystem-Modul für WebDAV
mod_dav_lock Locking-Modul für WebDAV
mod_dbd Verwaltet SQL-Verbindungen
mod deflate Komprimiert Inhalt vor der Auslieferung mit Deflate
mod_dialup Dialup
mod_dir Ordner-Verzeichnisanzeige
mod_dumpio Dumps all I/O to error log as desired
mod_echo Echo-Server für Testzwecke
mod_env Ändert die Umgebung
mod_example_hooks Beispielmodul
mod_expires Erzeugt die Expires und Cache-Control HTTP-Header
mod_ext_filter Gibt die Server-Antwort vor dem Ausliefern an externes Programm weiter
mod_file_cache Puffert Dateien im Arbeitsspeicher
mod_filter Kontextsensitive Filter
mod_headers Anpassung der HTTP-Header
mod_heartbeat Sendet Serverstatus an Proxyserver
mod_heartmonitor Monitor für mod_heartbeat Server
mod_ident RFC 1413 ident lookups
mod_imagemap Imagemaps
mod_include Serverseitiges Einbinden von HTMl-Dokumenten (Server Side Includes)
mod_info Serverinformationen
mod_isapi ISAPI (Apache for Windows)
mod_lbmethod_bybusyness Für mod_proxy_balancer
mod_lbmethod_byrequests Für mod_proxy_balancer
mod_lbmethod_bytraffic Für mod_proxy_balancer
mod_lbmethod_heartbeat Für mod_proxy_balancer
mod_ldap LDAP
mod_log_config Logging der Anfragen
mod_log_debug Debug Log
mod_log_forensic Forensisches Logging
mod_logio Logging der input/output bytes
mod_lua Lua-Hooks
mod_macro Makro-Unterstützung für die Konfigurationsdateien
mod_mime MIME
mod_mime_magic Feststellung der MIME per Magic Byte
mod_negotiation Content Negotiation
mod_nw_ssl SSL-Verschlüsselung für NetWare
mod_php Ausführung von PHP-Skripten
mod_privileges Solaris Privileges
mod proxy Proxy
mod_proxy_ajp AJP für mod_proxy
mod_proxy_balancer Lastverteilung für mod_proxy
mod_proxy_connect Unterstützung von CONNECT-Anfragen für mod_proxy
mod_proxy_express Dynamische Reverse-Proxy-Unterstützung für mod_proxy
mod_proxy_fcgi FastCGI-Unterstützung für mod_proxy
mod_proxy_fdpass fdpass-Unterstützung für mod_proxy
mod_proxy_ftp FTP-Unterstützung für mod_proxy
mod_proxy_html Rewrite HTML links in to ensure they are addressable from Clients’ networks in a proxy context
mod_proxy_http HTTP-Unterstützung für mod_proxy
mod_proxy_scgi SCGI-Gateway-Unterstützung für mod_proxy
mod_proxy_wstunnel WebSocket-Unterstützung für mod_proxy
mod_ratelimit Bandbreitenbegrenzung
mod_reflector Kann einen Ausgabefilter in einen HTTP-Dienst verwandeln
mod_remoteip Ersetzt die Client-IP mit einer Useragent-IP
mod_reqtimeout Legt Timeout fest
mod_request Unterstützung für HTTP-Anfragen (Requests)
mod rewrite Rewrite-Engine
mod_security Sicherheitsmodul (Web Application Firewall)
mod_sed Filtern mit sed
mod_session Unterstützung für Sitzungen
mod_session_cookie Sitzungen mit Cookies
mod_session_crypto Sitzungsverschlüsselung
mod_session_dbd DBD/SQL-basierte Sitzungen
mod_setenvif Erlaubt das Setzen von Umgebungsvariablen je nach Anfrage
mod_slotmem_plain Slot-based shared memory provider
mod_slotmem_shm Slot-based shared memory provider
mod_so Unterstützung für das Laden von Programmbibliotheken
mod_socache_dbm DBM-basierter socache
mod_socache_dc Distcache-basierter socache
mod_socache_memcache Memcache-basierter socache
mod_socache_shmcb shmcb-basierter socache
mod_speling Modul zum Korrigieren von Rechtschreibfehlern bei der Eingabe
mod ssl Kryptographie mittels SSL bzw. TLS
mod_status Informationen über Serveraktivität und -leistung
mod_substitute Ermöglicht Suchen & Ersetzen in der Serverantwort
mod_suexec CGI-Skripte als anderer Benutzer ausführen (suEXEC)
mod_unique_id Provides an environment variable with a unique identifier for each request
mod_unixd Basic (required) security for Unix-family platforms.
mod_userdir Benutzer-spezifische Verzeichnisse
mod_usertrack Clickstream-Logging
mod_version Versionsabhängie Konfiguration
mod_vhost_alias Dynamische Konfiguration für Virtual Hosting
mod_watchdog Periodisches Ausführen von Aufgaben
mod_xml2enc Fremde Zeichensätze für libxml2-Filtermodule

Siehe auch

Weblinks

Einzelnachweise

  1. www.apache.org. (abgerufen am 23. August 2016).
  2. downloads.apache.org.
  3. linuxdocs.org. (abgerufen am 23. August 2016).
  4. github.com. (abgerufen am 11. August 2017).
  5. The apache Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 26. September 2018).
  6. projects.apache.org. (abgerufen am 8. April 2020).
  7. httpd.apache.org. (abgerufen am 7. April 2016).
  8. www.apache.org. (abgerufen am 23. August 2016).
  9. Web Server Survey. Netcraft, Ltd., abgerufen am 13. April 2016.
  10. Why the name “Apache”? In: Apache Server Frequently Asked Questions. Apache Software Foundation, abgerufen am 3. November 2015 (englisch).
  11. Apache FAQ (experimental first posting). In: Google groups. Google Inc., 13. Mai 1997, abgerufen am 29. Januar 2010 (englisch).
  12. Upgrading to 2.4 from 2.2. Abgerufen am 14. Januar 2017.
  13. Apache HTTP Server 2.4.43 Released. In: Apache HTTP Server. Apache Software Foundation, 1. April 2020, abgerufen am 27. Mai 2020.
  14. https://packages.ubuntu.com/bionic/apache2-doc
  15. Apache Release History (englisch)
  16. Modul-Index – Apache HTTP Server. apache.org, abgerufen am 15. November 2014.