Apache 2.2: Strenger Indianer
Artikel erschienen in Swiss IT Magazine 2006/03
Die Apache Software Foundation hat mit der Version 2.2 eine runderneuerte Ausgabe ihres Webservers herausgebracht. Die Software, deren Marktanteil mittlerweile bei knapp 70 Prozent liegt, wurde vom Caching bis hin zur Anbindung an SQL-Datenbanken an vielen Stellen verbessert. Wir stellen die wichtigsten Neuerungen vor.
Die grösste Neuerung ist das neue Authentifizierungs- und Autorisierungsframework Authn/Authz. Es vereinheitlich die Module und Konfiguration der Zugangskontrolle in Apache. Zudem wurden die Anmeldung und die Abfrage der Benutzerdaten getrennt. Für die Anmeldung stehen wie auch bisher zwei Möglichkeiten zur Verfügung: Die Basic-Authentifizierung, die neu mittels mod_auth_basic realisiert wird, und die Digest-Authentifizierung, die vom überarbeiteten mod_auth_digest durchgeführt wird. Als Datenquellen können wie auch bisher verschiedene Module dienen, die als sogenannte Provider zusammengefasst werden. Die Provider unterstützen die Authentifizierung gegen htpasswd-Dateien (mod_authn_file), Datenbanken (mod_authn_dbm) und Directory-Server (mod_authnz_ldap). Entsprechend der neuen Modul-Namen hat sich natürlich auch die Benennung der Konfigurationsdirektiven geändert. Hier helfen – wie immer – die Online-Dokumentation und das Changelog weiter.
Besonders schätzen dürften Administratoren von komplexeren Umgebungen das neue Modul mod_authn_alias. Es ermöglicht es, gleichzeitig mehrere Datenquellen zu authentifizieren. So kann zum Beispiel zuerst in einer htpasswd-Datei nach Benutzername und Passwort geforscht werden. Wird Apache nicht fündig, kann als nächstes beispielsweise ein Directory Server angesprochen werden. Dies lässt sich beliebig ausbauen, so dass man nicht mehr in jedem Fall dazu gezwungen ist, die Datenquellen zu konsolidieren.
Ebenfalls einiges getan hat sich im Bereich Caching/Load Balancing. mod_cache, mod_disk_cache und mod_mem_cache für Caching auf Harddisk und Festplatte wurden stark überarbeitet und werden nun auch als stabil genug für Produktionsumgebungen angesehen. Zudem existiert mit htcacheclean ein Werkzeug zum Aufräumen der Harddisk-Caches.
Die Proxy-Funktionen umfassen mit mod_proxy_balancer neu ein Modul, das es erlaubt, Load Balancing ohne Software von Drittherstellern zu realisieren. Es setzt
auf mod_proxy auf und unterstützt Load Balancing für die Protokolle HTTP, FTP und AJP13. Die Last kann dabei entweder nach der Anzahl Requests oder nach der Traffic-Menge verteilt werden. Zudem wurde für das JServ-Protokoll AJP13 das Proxy-Modul neu implementiert. Die Entwickler versprechen sich von mod_proxy_ajp, das mod_jk2 ersetzt und zur Anbindung von Tomcat dient, vor allem eine einfachere Konfiguration.
Eine weitere geschlossene Baustelle ist die Unterstützung von SQL-Datenbanken. mod_dbd stellt diese nun zusammen mit apr_dbd sämtlichen Modulen zur Verfügung. Die einzige reale Applikation ist bislang allerdings die bereits beschriebene Authentifizierung via mod_authn_dbd. mod_dbd kann im Moment mit MySQL, PostgreSQL und SQLite sprechen, wobei für sämtliche MPMs (Multi Processing Module), die auf Threads setzen, Connection-Pooling unterstützt wird.
Eine Art Connection Pooling findet man auch beim neuen Event MPM, das auf dem bereits seit der Version 2.0 vorhandenen Worker MPM basiert: Es nutzt einen separaten Thread, um Keep-Alive-Requests zwischenzuspeichern. Dies spart Worker-Threads ein, die nun nicht mehr auf eventuell noch eintreffende Anfragen warten müssen.
Flexibilisiert wurde das Filter-Modul mod_filter. Im Gegensatz zu mod_filter aus der Version 2.0 unterstützt es eine dynamische Konfiguration der Filter-Kette. So können Filter nun je nach Bedingung eingesetzt werden. Die Entscheidung kann dabei anhand von Request- oder Response-Headern getroffen werden.
Last but not least kann Apache nun auch auf 32-Bit-Systemen Dateien ausliefern, die grösser als 2 GB sind. Zudem wurde die Konfigurationsdatei httpd.conf aufgeteilt, womit sich die Apache Software Foundation ein Beispiel an den meisten modernen Linux-Distributionen genommen hat. Die httpd.conf enthält nur noch die wichtigsten Einstellungen. Alle anderen Optionen wurden auf thematisch abgetrennte Include-Dateien aufgeteilt.