LDAP-Untergruppen unter Apache
Heute wollte ich endlich einmal die Berechtigungen in unserem Nagios-Webinterface in Ordnung bringen und bin einmal wieder über ein Problem gestolpert, von dem ich nicht dachte, dass ich mir hier überhaupt noch Gedanken machen muss. Das Apache-Modul »mod_authnz_ldap« unterstützt doch aber tatsächlich keine Abfrage von Untergruppen im LDAP (Im Fachjargon auch »subgroups« oder »nested groups« genannt). Untergruppen, also eine Gruppe innerhalb einer Gruppe um den Administrationsaufwand beim Zuordnen von Benutzerrechten möglichst gering zu halten.
Im aktuellen Entwicklerzweig bzw. in der zukünftigen Apache-Version (wohl aber erst in Apache 2.3?) scheint es hier über die Option »authldapmaxsubgroupdepth« aber endlich eine Möglichkeit zu geben, wie die Dokumentation zeigt. Ich hab meine Gruppenstruktur in diesem speziellen Fall jetzt erst einmal flach aufgebaut und werde die Option vielleicht später einmal testen. Sollte hier schon jemand Erfahrungen gemacht haben, bin ich über jeden kurzen Kommentar dankbar.
USB 2.0 Grafik unter Seven
Wer einen 3. Monitor an sein System anschließen möchte, musste bisher zu teuren Grafikkarten mit entsprechenden Ausgängen greifen oder, wenn Monitor 2 und 3 nicht simultan benötigt werden, einen VGA- bzw. DVI-Umschalter benutzen. Ersteres hatte ich liegen und benutzte es bisher, um von meinem 2. Monitor auf den LCD-TV umzuschalten, wenn dort Inhalte wiedergegeben werden sollten. Die DVI-Variante ist in der Anschaffung nicht ganz günstig, so dass ich aus diesem Grund bisher nicht umgerüstet habe.
Jetzt ist mir zum Testen ein »USB 2.0 to DVI – VGA – HDMI Adapter« von der Firma DeLOCK in die Hände gefallen, den ich heute auch direkt einmal ausprobieren musste. CD rein geschmissen, zur Auswahl stand ein Treiber in der Version 4.50 und 4.60. Neuer ist besser, also Version 4.60 installiert – aber was ist das? Mein Betriebssystem wird nicht unterstützt. Na gut, wer die RC von Windows 7 einsetzt, muss mit solchen Dingen natürlich rechnen. Auf der Webseite des Herstellers ist der neueste Treiber mit Version 2.51 gelabelt, immerhin steht aber auch hier geschrieben, dass Windows Vista unterstützt wird. Nachdem der Treiber die alte Version entfernt und sich selber im System verewigt hat, möchte er einen Neustart des Systems, na wenn es hilft doch gerne. Nach dem Reboot, als der Treiber initialisiert, wird ein kleines Fenster unten rechts im Systray eingeblendet: Ein Hinweis auf die Website http://www.displaylink.com/ auf der es aktualisierte Treiber zum Download geben soll. Muss ich erst die ältere(?) Treiberversion von der Hersteller-Website installieren, um diesen Hinweis zu bekommen?
Aber tatsächlich gibt es dort die Download-Möglichkeit eines Windows 7-Treibers, zwar mit dem Vermerk, dass es sich hier noch um eine Alpha-Version handelt, aber genauso wünsch ich mir das doch. Einen Reboot später steht der neue Anschluss zur Verfügung, sogar performanter als erwartet. Selbst HD-Filme in 1080p lassen sich dort abspielen, einzig die Aero-Effekte von Windows hacken ein kleines bisschen.
Das Gerät ist für ca. EUR 80,- im Handel erhältlich und wird mit einem Mini-USB-Kabel, einem DVI auf VGA- und einem DVI auf HDMI-Adapter ausgeliefert. Ich bin zufrieden und überlege nun, ob ich mir ein Solches bestelle, das Testgerät steht mir leider nur noch über das Wochenende zur Verfügung.
Hosteurope Virtual-Upgrade
Auf einem »Hosteurope VPS Linux L 2.0« habe ich in den letzten Wochen begonnen, einen Shop auf Basis von »Magento Commerce« (Version 1.3.2.2) einzurichten. Ab und zu stolpert man hier über Erfahrungsberichte: Um Magento ernsthaft nutzen zu können, muß ein dedizierter Server eingesetzt werden. Beim Einrichten hab’ ich mich hier tatsächlich auch schon über die bis zu 10 Sekunden langen Ladezeiten geärgert. Ganz egal, ob man sich im Backend befindet oder das Frontend laden lässt, der auch schon etwas ältere VPS ist einfach zu schwach. Ausgestattet ist der »Hosteurope VPS Linux L 2.0« mit 2x Intel Pentium 4 2.80GHz und bescheidenen 256MB zugesichertem RAM, dynamisch, so sagt es Hosteurope, kann etwas mehr zugeordnet werden.
Gestern nun habe ich ein Upgrade auf den »Hosteurope Virtual Server Linux XL 3.0« durchgeführt. Hier werkeln 2 Intel Pentium D 3.00GHz mit 512MB zugesichertem RAM. Der Pentium D hat mich gestern schon enttäuscht gucken lassen, ein XEON hätte mich hier wohl eher freudig gestimmt. Da ein Versionsupgrade bei Hosteurope über eine Parallelbereitstellung realisiert wird (nagelneuer Server, neue IP, nach 7 Tagen wird der alte Server dann abgeschaltet, siehe Hosteurope-FAQ), kann ich die beiden VMs nun direkt gegenüberstellen. Auf die verschienen Systeme, Kernel, Apache- und PHP-Versionen möchte ich jetzt nicht eingehen, das sprengt hier den Rahmen.
Gestestet wurde über den Apache-internen Benchmark namens »ab«, hier wurde jeweils lokal, auf der jeweiligen VM, folgender Aufruf getätigt:
1 | ab -n 10 -c 2 http://www.meinshop.domain/shop/rubrik/unterrubrik.html |
10 Anfragen, 2 zur gleichen Zeit. Aufgerufen wird eine Übersichtsseite mit 5 Produkten, das Caching für Magento ist noch komplett ausgeschaltet. Auf dem alten VPS benötigten die Anfragen insgesamt 56 Sekunden (Ø 10s/Seite), der Neue schafft die Anfragen in 19,5 Sekunden (Ø 4s/Seite). Die exakten Testergebnisse sind in den Screenshots zu erkennen. Dies ist erst einmal akzeptabel, nach oben bietet Hosteurope noch eine weitere Ausbaustufe (XXL), das Magento Caching dürfte auch noch etwas Besserung bringen. Bei stark frequentierten Magento-Shops wird vermutlich wirklich ein dedizierter Server nötig.
Von mod_proxy zu mod_rewrite
Ich nutze eigentlich schon recht lange die »ProxyPass«-Direktive im Apache. Oft schon hatte ich mir gewünscht, hier »Regular Expressions« nutzen zu können, um ein paar speziellen Anforderungen gerecht zu werden. Dies klappt in Verbindung mit »ProxyPass« nur leider nicht. Heute nun habe ich versucht, meine »ProxyPass« Zeilen mit einer »RewriteRule« zu kombinieren. Die Erkenntnis aus diesen Versuchen war, dass »mod_proxy« _vor_ »mod_rewrite« ausgeführt wird, unabhängig von der Reihenfolge, wie diese Anweisungen in der Apache-Config auftauchen. Zumindest trifft dies auf den hier verwendeten Apache 2.0.55 (Ubuntu Dapper) zu, wie sich der Apache 2.2 verhält habe ich noch nicht getestet. Recht einfach aber lässt sich das Problem umgehen, indem komplett auf »mod_rewrite« umgestellt wird:
1 2 3 | RewriteRule ^/unterordner$ /unterordner/ [R] RewriteRule ^/unterordner/(.*)$ http://192.168.1.1/unterordner/$1 [P] ProxyPassReverse /unterordner/ http://192.168.1.1/unterordner/ |
Zeile 1 macht einen Redirect, schreibt die URI im Webbrowser direkt um, wenn kein Slash hinter den Aufruf gehängt wird.
In Zeile 2 dann der eigentliche »ProxyPass«-Ersatz, zu erkennen an dem Flag »[P]«. Hier werden alle Aufrufe von »/unterordner« an den zuständigen, internen Webserver weitergeleitet.
Der »ProxyPassReverse« in Zeile 3 kann meiner Erkenntnis nach nicht durch »mod_rewrite« ersetzt werden. Er wird benötigt um den HTTP-Header bei 3xx-Statuscodes entsprechend anzupassen. Dies kommt zwar nur sehr selten vor, ich setze diesen Eintrag der Vollständigkeit halber aber für jede Weiterleitung.
