Apache HTTP Server
Der Apache HTTP Server ist der wohl weltweit am meisten verwendete Webserver. Er gehört zur Apache Software Foundation und ist sowohl quelloffen als auch kostenfrei. Es wird davon ausgegangen, dass mehr als die Hälfte aller Websites auf einem Apache-Server installiert ist. Der Marktanteil soll laut einer Statistik 2018 bei rund 43 Prozent weltweit liegen.[1] Durch die Arbeit vieler Entwickler kann der Apache Server um unzählige Module erweitert werden. Vor allem bei SEOs ist der Apache HTTP Server wegen des Moduls mod_rewrite beliebt.
Entwicklung
Die Ursprünge des Apache HTTP Server reichen bis ins Jahr 1995 zurück, als eine Gruppe von Software-Entwicklern in den USA eine bereits vorhandene Server-Software der Universität Illinois optimieren wollte. Bei den Verbesserungen lag der Schwerpunkt vor allem auf sogenannten „patches“. Aus dieser ursprünglich geplanten Ausbesserung entstand schließlich ein eigenständiges Server-Programm. Die Singularform dieser „IT-Flicken“ gab der Legende nach dem neuen Produkt schließlich auch seinen Namen „a patch-e“, also Apache. Heute herrscht jedoch vielerorts Konsens darüber, dass der Name Apache als Ehrerbietung gegenüber dem gleichnamigen Indianerstamms gewählt wurde. Am 1. Dezember 1995 erfolgte der Realeas des Apache 1.0. Heute (Stand: März 2018) ist der Server bis zu Version 2.4.33 weiterentwickelt worden.
Begünstigt wurde die stetige Weiterentwicklung des Apache HTTP Server durch die steigende Internetnutzung und -verbreitung, die einen vermehrten Bedarf an leistungsstarker Server-Software hervorrief. Die Schar der Entwickler, die sich mit Apache auseinandersetzte und die Idee voranbrachte stieg ebenfalls, da die Software von Beginn an quelloffen (Open Source) war. Schließlich wurde im Jahr 1999 eine eigenständige Stiftung, die Apache Software Foundation gegründet.
Ursprung und Kompatibilität
Wie viele Entwickler heute arbeiteten auch die „Erfinder“ des Apache HTTP Server mit UNIX. Somit war die Erstversion auch für diese Plattformen optimiert. Heute ist die Server-Software mit allen gängigen Plattformen wie Linux oder Windows kompatibel. Es wird jedoch empfohlen, den Apache HTTP Server mit Windows-Versionen ab NT zu betreiben.
Um die Vorteile eines bestimmten Betriebssystems voll auszunutzen, wurde Version 2.0 des Apache HTTP Server mit einer speziellen Bibliothek ausgestattet, der Apache Portable Runtime. Darüber hinaus verfügt die neue Apache-Version über zahlreiche Multiprocessing-Module, die auf die jeweiligen Stärken des Betriebssystems ausgerichtet sind.
Module
Ein großer Vorteil des Apache HTTP Servers ist sein Aufbau, denn er besteht aus Modulen. Diese können für viele verschiedene Zwecke genutzt werden. Somit zeichnet sich der quelloffene Server als sehr flexibel aus. Zu den am häufigsten genutzten Modulen gehören:
- mod_ssl: Hiermit können Verbindungen zwischen dem Webserver und dem Browser verschlüsselt werden. Die Verschlüsselung erfolgt dann mit Hilfe eines SSL-Zertifikats
- mod_headers: Mit diesem Modul können die Daten im Header einer Website verändert werden. Auf diese Weise können zum Beispiel zusätzliche Informationen für einen Browser hinterlegt werden.
- mod_rewrite:Damit lassen sich URLs manipulieren und zum Beispiel URLs mit Parametern in suchmaschinenfreundliche URLs umwandeln.
- mod_deflate: Dieses Modul kann Websites komprimieren, bevor sie an den Client ausgeliefert werden. Dadurch lässt sich zum Beispiel Ladezeit sparen.
Weitere Module ohne Anspruch auf Vollständigkeit:
Module, die den Zugriff regeln
- mod_access_compat: Gruppenauthentifizierung auf der Basis von IP-Adressen oder Hosts
- mod_auth_digest: Authentifizierungsmethode auf der Basis MD5 Digest Authentication
- mod_auth_form: Authentifizierung über ein Formular
- mod_authn_anon: erlaubt anonymen Nutzerzugriff auf authentifizierte Bereiche
- mod_authn_core: Core-Authentifizierung
- mod_authn_dbd: Zugriffsberechtigung über eine SQL-Datenbank
- mod_authn_dbm: Zugriffssteuerung über DBM-Dateien
- mod_authn_file: Zugriffssteuerung über Text-Dateien
- mod_authn_socache: Verwaltete einen Cache mit Authentifzierungsinfomationen, um die Belastung des Backends zu verringern
- mod_authnz_fcgi: erlaubt einem FastCGI Authorizer Apache httpd Authentifizierung und Autorisierung zu steuern
- mod_authnz_ldap: erlaubt einem LDAP-Verzeichnis die Datenbank für HTTP Basic authentication anzulegen
- mod_authz_core: Core-Autorisierung
- mod_authz_dbd: regelt Gruppen-Autorisierung und -Login per SQL
- mod_authz_dbm: Gruppen-Autorisierung über DBM-Dateien
- mod_authz_groupfile: Gruppen-Autorisierung mit Volltext
- mod_authz_host: Gruppen-Autorisierung auf der Basis des Hosts (Name oder IP-Adresse)
- mod_authz_owner: Autorisierung auf der Basis des Eigentümers
- mod_authz_user: Nutzer-Autorisierung
- mod_auth_basic: klassische HTTP Authentifizierung
Module zur Skalierung der Zugriffsmöglichkeiten
- mod_actions: Dieses Modul ermöglicht die Ausführung von CGI-Skripten in Abhängigkeit von Medientypen und Anfragemethoden.
- mod_alias: Provides for mapping different parts of the host filesystem in the document tree and for URL redirection
- mod_allowmethods: beschränkt die http-Methoden auf dem Server
- mod_asis: versendet Daten mit eigenem http-Header
Module für die Erstellung von Indizes und Cache-Steuerung
- mod_autoindex: Generates directory indexes, automatically, similar to the Unix ls command or the Win32 dir shell command
- mod_brotli: Compress content via Brotli before it is delivered to the client
- mod_buffer: Support for request buffering
- mod_cache: RFC 2616 compliant HTTP caching filter.
- mod_cache_disk: Disk based storage module for the HTTP caching filter.
- mod_cache_socache: Shared object cache (socache) based storage module for the HTTP caching filter.
Module zur Steuerung von Skripten und Datenbanken
- mod_cern_meta: CERN httpd metafile semantics
- mod_cgi: Execution of CGI scripts
- mod_cgid: Execution of CGI scripts using an external CGI daemon
- mod_charset_lite: Specify character set translation or recoding
- mod_data: Convert response body into an RFC2397 data URL
- mod_dav: Distributed Authoring and Versioning (WebDAV) functionality
- mod_dav_fs: Filesystem provider for mod_dav
- mod_dav_lock: Generic locking module for mod_dav
- mod_dbd: Manages SQL database connections
- mod_http2: Support for the HTTP/2 transport layer
- mod_ident:RFC 1413 ident lookups
Module zur Verwaltung von Verbindungen zur Proxy-Servern
- mod_proxy: Multi-protocol proxy/gateway server
- mod_proxy_ajp: AJP support module for mod_proxy
- mod_proxy_balancer
- mod_proxy extension for load balancing
- mod_proxy_connect
- mod_proxy extension for CONNECT request handling
- mod_proxy_express: Dynamic mass reverse proxy extension for mod_proxy
- mod_proxy_fcgi: FastCGI support module for mod_proxy
- mod_proxy_fdpass: fdpass external process support module for mod_proxy
- mod_proxy_ftp: FTP support module for mod_proxy
- mod_proxy_hcheck: Dynamic health check of Balancer members (workers) for 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 support module for mod_proxy
- mod_proxy_http2: HTTP/2 support module for mod_proxy
- mod_proxy_scgi: SCGI gateway module for mod_proxy
- mod_proxy_uwsgi: UWSGI gateway module for mod_proxy
- mod_proxy_wstunnel: Websockets support module for mod_proxy
Weitere Module in alphabetischer Reihenfolge
- mod_dialup: Send static content at a bandwidth rate limit, defined by the various old modem standards
- mod_dir: Provides for "trailing slash" redirects and serving directory index files
- mod_dumpio: Dumps all I/O to error log as desired.
- mod_echo: A simple echo server to illustrate protocol modules
- mod_env: Modifies the environment which is passed to CGI scripts and SSI pages
- mod_example_hooks: Illustrates the Apache module API
- mod_expires: Generation of Expires and Cache-Control HTTP headers according to user-specified criteria
- mod_ext_filter: Pass the response body through an external program before delivery to the client
- mod_file_cache: Caches a static list of files in memory
- mod_filter: Context-sensitive smart filter configuration module
- mod_heartbeat: Sends messages with server status to frontend proxy
- mod_heartmonitor: Centralized monitor for mod_heartbeat origin servers
- mod_imagemap:Server-side imagemap processing
- mod_include:Server-parsed html documents (Server Side Includes)
- mod_info:Provides a comprehensive overview of the server configuration
- mod_isapi:ISAPI Extensions within Apache for Windows
- mod_lbmethod_bybusyness: Pending Request Counting load balancer scheduler algorithm for
- mod_lbmethod_byrequests:Request Counting load balancer scheduler algorithm for
- mod_lbmethod_bytraffic: Weighted Traffic Counting load balancer scheduler algorithm for
- mod_lbmethod_heartbeat:Heartbeat Traffic Counting load balancer scheduler algorithm for
- mod_ldap:LDAP connection pooling and result caching services for use by other LDAP modules
- mod_log_config: Logging of the requests made to the server
- mod_log_debug: Additional configurable debug logging
- mod_log_forensic: Forensic Logging of the requests made to the server
- mod_logio: Logging of input and output bytes per request
- mod_lua: Provides Lua hooks into various portions of the httpd request processing
- mod_macro: Provides macros within apache httpd runtime configuration files
- mod_md: Managing domains across virtual hosts, certificate provisioning via the ACME protocol
- mod_mime: Associates the requested filename's extensions with the file's behavior (handlers and filters) and content (mime-type, language, character set and encoding)
- mod_mime_magic:Determines the MIME type of a file by looking at a few bytes of its contents
- mod_negotiation: Provides for content negotiation
- mod_nw_ssl:Enable SSL encryption for NetWare
- mod_privileges: Support for Solaris privileges and for running virtual hosts under different user IDs.
- mod_ratelimit: Bandwidth Rate Limiting for Clients
- mod_reflector: Reflect a request body as a response via the output filter stack.
- mod_remoteip: Replaces the original client IP address for the connection with the useragent IP address list presented by a proxies or a load balancer via the request headers.
- mod_reqtimeout: Set timeout and minimum data rate for receiving requests
- mod_request: Filters to handle and make available HTTP request bodies
- mod_sed: Filter Input (request) and Output (response) content using sed syntax
- mod_session: Session support
- mod_session_cookie: Cookie based session support
- mod_session_crypto: Session encryption support
- mod_session_dbd: DBD/SQL based session support
- mod_setenvif: Allows the setting of environment variables based on characteristics of the request
- mod_slotmem_plain: Slot-based shared memory provider.
- mod_slotmem_shm: Slot-based shared memory provider.
- mod_so: Loading of executable code and modules into the server at start-up or restart time
- mod_socache_dbm: DBM based shared object cache provider.
- mod_socache_dc: Distcache based shared object cache provider.
- mod_socache_memcache: Memcache based shared object cache provider.
- mod_socache_shmcb: shmcb based shared object cache provider.
- mod_speling: Attempts to correct mistaken URLs by ignoring capitalization, or attempting to correct various minor misspellings.
- mod_status: Provides information on server activity and performance
- mod_substitute: Perform search and replace operations on response bodies
- mod_suexec:Allows CGI scripts to run as a specified user and Group
- 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: User-specific directories
- mod_usertrack: Clickstream logging of user activity on a site
- mod_version: Version dependent configuration
- mod_vhost_alias: Provides for dynamically configured mass virtual hosting
- mod_watchdog: provides infrastructure for other modules to periodically run tasks
- mod_xml2enc: Enhanced charset/internationalisation support for libxml2-based filter modules
Weitere Möglichkeiten mit einem Apache HTTP Server
- dynamische Erstellung von Websites: Als Server-Software hat der Apache HTTP Server den Vorteil, dass Websites damit dynamisch erstellt werden können. Hierfür müssen gängige Skriptsprachen wie PHP oder Perl verwendet werden. Darüber hinaus unterstützt der Apache HTTP Server auch Python oder JavaScript. Alle diese Sprachen werden modular angelegt und können einfach und schnell installiert werden. Der Vorteil dabei besteht darin, dass durch die einfache Anlage von Skriptsprachen dynamische Websites einfach erstellt werden können.
- Benutzer-Authentifizierungen: Mit der Modulreihe mod_authn können Apache-Server die Authentifizierung von Nutzern für den Zugang zu bestimmten Seitenbereichen steuern.
Vor- und Nachteile des Apache-Servers
Vorteile
- hohe Flexibilität
- vielfach bewährter Server mit umfangreicher Dokumentation
- quelloffenes System sorgt für umfangreiche Entwicklung weltweit
- meistverbreiteter Server der Welt
- vielfältige SEO-Möglichkeiten
- mit gängigen Skriptsprachen und Datenbanken kombinierbar
- arbeitet mit Betriebssystemen wie Unix, Linux, Windows, Mac OS X, Netware, OpenBSD
Nachteile
- schwächere Performance bei vielen gleichzeitigen Zugriffen
- IT-Sicherheit kann von jedem mit entsprechenden Server-Rechten manipuliert werden
LAMP, der Standard für die Installation des Apache HTTP Server
Um den Apache HTTP Server optimal zu nutzen, wird die Kombination LAMP empfohlen. Sie steht für: L wie Linux, A wie Apache, M wie MySQL und P wie PHP.
Apache und SEO
Für SEOs bietet der Apache HTTP Server viele Vorteile. Einer der größten besteht darin, dass das Modul mod_rewrite dafür sorgt, dass dynamische URLs in statische umgeschrieben werden können. Man spricht deshalb auch häufig von SEF-URLs (Search Engine Friendly).
Darüber hinaus lassen sich auch Weiterleitungen wie ein 301-redirect mit Hilfe eines Apache HTTP Servers lösen. Auf diese Weise trägt das Apache-Server dazu bei, Duplicate Content durch einen Redirect zu vermeiden.
Für die nötige Websicherheit lassen sich SSL-Zertifikate auf dem Server einrichten. Hierfür wird das Modul ModSSL verwendet. Mit dem Server ist es somit einfach möglich, die eigene Webseite zu verschlüsseln. Für das Ranking kann die SSL-Verschlüsselung von Vorteil sein, da Google spätestens im Juli 2018 unverschlüsselte Webseiten als nicht sicher markiert.
Als Nachteil für die Usability und SEO wird bei Apache HTTP Servern die Tatsache gesehen, dass der Server für jede geöffnete Verbindung einen eigenen Prozess startet. Wird eine Internetseite nur mäßig frequentiert, spielt das nur eine geringe Rolle. Doch gerade bei großen Webprojekten mit vielen tausend gleichzeitigen Besuchern kann das zum Nachteil werden. Dieses Manko wird allgemein den Ursprüngen des Apache-Projekts zugeordnet. Damals war das Problem von hohen Zugriffszahlen noch nicht so relevant und somit wurde der Ressourcenverbrauch bei der Konzeption kaum berücksichtigt. Trafficstarke Websites basieren aus diesem Grund häufig auf Nginx.
Einzelnachweise
- ↑ Marktanteile der führenden Webserver weltweit im März 2018 de.statista.com Abgerufen am 29.04.2018
Weblinks
- Website der Apache Server Foundation
- Download des Apache HTTP Servers (httpd) in der aktuellen Version
- Website für den Apache HTTP Server
- Ausführliche Beschreibung der einzelnen Module auf selfhtml.org
- Nginx vs. Apache:Wann welcher Webserver sinnvoll ist
- Apache vs. nginx