Nachtrag am 22.01.2010:
Seit heute scheint das weiter unten geschilderte Problem mit der Remote-Adresse nicht mehr zu bestehen. Die Einträge in der .htaccess-Datei oder sonstige Eingriffe sind daher möglicherweise nicht mehr erforderlich.
Bei mir ist das Problem verschwunden, aber offensichtlich noch nicht generell.
Nachtrag am 01.03.2011:
Nach aktuellen Informationen ist das Problem wohl nun doch endgültig behoben worden. Die Einträge in der .htaccess-Datei oder sonstige Eingriffe sind daher nicht mehr erforderlich.
Seit Anfang Dezember 2009 bin ich mit meiner Schnurpsel-Seite wieder zurück zu Strato umgezogen. Ganz weg war ich ja nicht, ich hatte nur den Hostnamen bei einem anderen Anbieter aufgeschaltet. Aber seit es nun SpeedPlus bei Strato gibt, bin ich nun doch wieder zurückgekehrt.
Die Geschwindigkeit ist wirklich gut. Antwortzeiten von ungefähr 0,5 Sekunden gegenüber 3 bis 4 Sekunden vorher sind für ein PHP-Schwergewicht wie WordPress eine merkliche Verbesserung. Zudem wurde auch gleich das ohne-www-Problem beseitigt, in der Umgebungsvariable HTTP_HOST steht nun der tatsächlich im HTTP-Request angegebene host drin.
Die Remote-IP-Adresse (REMOTE_ADDR)
Neben allerlei anderen interessanten Informationen wird bei jedem Webseitenaufruf auch die IP-Adresse des Aufrufers in einer Umgebungsvariablen vermerkt. Auf diese kann z.B. mit Skriptsprachen wie PHP oder Perl als Variable „REMOTE_ADDR“ zugegriffen werden. Diese Remote-Adresse ist z.B. für statistische Auswertungen interessant oder kann beim Aussperren unerwünschter Zugriffe (Spam-Bots) helfen.
Allerdings zählt diese IP-Adresse ja nach Auffassung und Auslegung der Gesetze zu den personenbezogenen Daten und dürften dann eigentlich nicht gespeichert werden. Bei Strato werden die IP-Adressen in den den Kunden zur Verfügung gestellten Serverlogdateien in anonymisierter Form gespeichert. Auch die im Kundenmenü anzeigbare Webseiten-Statistik greift auf diese Daten zurück.
So können die Zugriffe zwar unterschieden aber nicht einem konkreten Anschluß zugeordnet werden
Mehr Geschwindigkeit mit SpeedPlus
Wenn ich die Grafik zu SpeedPlus bei Strato richtig deute, werden die Zugriffe nicht mehr direkt auf die Webserver geroutet, sondern von einem Loadbalancing-Cluster lastabhängig verteilt.
Diese Verteilung funktioniert vermutlich ähnlich wie bei einem nicht-transparenten Proxy, denn für den Webserver sieht es so aus, als würde der Strato-interne Server die Seite anfordern. Genau deshalb steht in der Remoteadresse nicht mehr die IP-Adresse des Aufrufers drin, sondern eine 81.169.145.xxx drin.
Komischerweise tritt der Effekt aber nicht bei allen Domains auf, nur die Hälfte meiner Domains (inkl. Subdomains) bei Strato ist davon betroffen.
Die richtige Remoteadresse ermitteln und setzen
Ich wäre ja nicht Schnurpsel, hätte ich nicht bereits eine Lösung für das Problem parat :-)
Die richtige IP-Adresse findet man im Request-Header-Feld X-Forwarded-For, daß heißt der Strato-Server trägt hier die Adresse ein, von der er die Anforderung erhalten hat.
In Skriptsprachen wie PHP oder Perl steht diese Variable als „HTTP_X_FORWARDED_FOR“ zur Verfügung. Hier könnte man sich die Remote-Adresse also einfach möglichst am Anfang (bei WP z.B. in der wp-config.php) der Abarbeitung in die REMOTE_ADDR eintragen, z.B. so:
if( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) { $ip_addr = @trim( @end( @explode( ",", $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) ); if( '' != $ip_addr ) $_SERVER['REMOTE_ADDR'] = $ip_addr; }
Hier kommen zwei wichtige Aspekte zum Tragen, denn in „X-Forwarded-For“ können mehrere durch Komma getrennte IP-Adressen stehen, sofern unterwegs mehrere Proxies durchlaufen wurden. Außerdem soll die Adresse nicht überschrieben werden, falls kein X-Forwarded-For-Feld existiert oder aus anderem Grund nicht ermittelt werden kann.
Für Perl könnte das etwa so aussehen:
if( $ENV{'HTTP_X_FORWARDED_FOR'} ne "" ) { my @ip_list = split(/,/, $ENV{'HTTP_X_FORWARDED_FOR'}); $ENV{'REMOTE_ADDR'} = $ip_list[-1]; }
Nachteil ist hierbei natürlich, daß man alle Webapplikationen, die irgendwie die REMOTE_ADDR verwenden, entsprechend anpassen muß. Es geht aber auch noch einfacher und allgemeiner.
Umgebungsvariablen mit mod_setenvif setzen
Das Apache-Modul mod_rewrite kennen bestimmt viele WordPress-Nutzer, manch einer kennt vielleicht sogar mod_alias, aber vermutlich nur wenige haben schon mal etwas vom Modul mod_setenvif gehört. Es kommt auch ganz bescheiden und unspektakulär mit nur vier Anweiungen daher.
Mit dem Modul mod_setenvif hat man die Möglichkeit, Umgebungsvariablen abhängig von Request-Feldern zu setzen. Genau das brauchen wir hier. Wir haben das Request-Feld X-Forwarded-For und wollen abhängig davon die Umgebungsvariable REMOTE_ADDR setzen. Das Problem läßt sich mit ein bißchen Regular-Expression in einer Zeile in der .htacces erschlagen:
SetEnvIf X-Forwarded-For "(.+,)? *(.+)$" REMOTE_ADDR=$2
Optimalerweise steht diese Zeile ganz am Anfang einer .htaccess im Wurzelverzeichnis des Webpaketes. Dann wirkt sei auch auf alle Domains oder Subdomains, die ihr sichtbares Wurzelverzeichnis in einem Unterverzeichnis des Webspace haben.
Das schöne an diesem kleinen Eingriff ist, daß er auch auf das Serverlogfile und die Webstatistik wirkt. Im Logfile stehen nun wieder zwar anonymisierte, aber unterscheidbare Zugriffe und die Webstatistik zeigt nicht mehr 10000 Zugriffe von nur 5 Adressen an.
Ende gut, alles gut?
Mit ein bißchen Handarbeit kann man wieder mal einen Strato-Konfigurationsfehler ausbügeln. Andereseits ist die SpeedPlus-Plattform noch recht neu, da können solche Fehler schon mal auftreten. Ich habe das Problem auch bereits vor 10 Tagen an den Strato-Support gemeldet, warte aber immer noch auf die Antwort zu meinem Ticket. Scheint etwas komplizierter zu sein. Bis zur Strato-Problemlösung kann mein kleiner „Trick“ zumindest über die Zeit helfen.
Hallo Schnurpsel,
vorab besten Dank für die informative Seite.
Mein Kommentar bezieht sich weniger auf den gesamten Post, denn mehr auf den ersten Satz: „Seit Anfang Dezember 2009 bin ich mit meiner Schnurpsel-Seite wieder zurück zu Strato umgezogen.“
Auf Grund hier nicht zu nennender Umstände gedenke ich meinen Provider zu wechseln und WordPress einzusetzen. In früheren Posts hast du von Strato in Verbindung mit WordPress abgeraten. Würdest du Strato bei Verwendung eines „PowerPlus“ Pakets jetzt empfehlen? Wie sieht es in Verbindung mit anderen Paketen aus?
Besten Dank und Gruß
vandemeer
Hallo Schnurpsel,
vielen Dank für deine Tipps!
Was muss ich denn genau tun, um Speed Plus bei Strato nutzen zu können?
VG
Hallo Kai,
falls Du noch kein PowerPlus-Paket bei Strato hast, mußt Du in den PowerPlus-Tarif wechseln.
Wenn Du schon PowerPlus hast, mußt Du die Umstellung auf SpeedPlus selber anstoßen. Zunächst bekommen wohl nur Neukunden SpeedPlus.
Mich hatte Strato allerdings auf Grund eines angeblich von mir stammenden Support-Tickets angerufen und dann umgestellt.
Viellеiсht solltest Du einfach mal eine entspechende Supportanfrage stellen, die schlechte WordPress-Performance beklagen und auf SpeedPlus hinweisen, oder so.
Ein PowerPlus-Paket habe ich bereits.
Dann werd ich mal mein Glück beim Support probieren…
VG
Ich muß vorerst weiterhin den obigen Tipp mit der .htaccess befolgen: Ein testhalber erfolgter Rückbau der oben genannten Zeile führte sofort wieder dazu, daß nachfolgend eingehende Kommentare unter der IP 81.169.145.xxx gelistet werden…
Ich habe meine Website erst am Anfang der Woche auf Speedplus umstellen lassen. Gestern habe ich das mit den identischen IP Adressen bemerkt und beim Support angerufen. Dem Servicemitarbeiter war das Problem neu und er wollte mich nach Recherche zurückrufen.
Ich vermute das kann noch dauern ;-) deshalb werde ich bis dahin Deinen .htaccess Hack mal probieren. Vielen Dank dafür.
Hmmm, ist schon eine seltsame Sache.
Ich hatte im Januar nochmal bei Strato nach meinem Support-Ticket (per E-Mail) von Anfang Dezember nachgehakt und die Mitteilung bekommen, daß es dann an den 2. Level-Support weitergeleitet wurde. Und wenig später habe ich das Remote-Adress-Problem nicht mehr. Eine Antwort habe ich bisher allerdings auch nich erhalten.
Also daß das Problem neu sei, kann eigentlich nicht stimmen. Und warum wurde es nicht glеiсh generell behoben?