Das Putzlowitsch Test- und SEO-Blog

Strato PowerPlus mit SpeedPlus – Fehler bei der Remote-Adresse (REMOTE_ADDR)

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.

7 Kommentare »

Noch zwei Interessenten für Strato

Nachdem sich Strato-Eigentümer Freenet bereits vom DSL-Geschäft getrennt hat, möchte man auch die Webhosting-Sparte los werden. Nur noch zwei Bieter sind im Rennen, die Interesse an Strato haben, die Deutsche Telekom und United Internet. United Internet hat bereits mit 1&1 einen direkten Strato-Konkurrenten im Hostingbereich am Markt.

Auch wenn ich mich hier bei Schnurpsel technisch und inhaltlich mehr und mehr von Strato entferne, habe ich immer noch die leise Hoffnung, daß sich vielleicht mit einem Besitzerwechsel bezüglich des Strato-Shared-Webhostings performancemäßig alles zum Guten wendet. Zumindest für größere PHP-Projekte wie WordPress oder Joomla kann man im Moment von Strato nur abraten.

Weitere Artikel mit Bezug zu diesem:
Keine Kommentare »

VolksPhone-Diagramm aufgehübscht

Man lernt ja immer noch etwas dazu. So war mir bisher gar nicht klar, daß man mit der GDLib in PHP auch Truetype-Fonts verwenden kann. Da sehen Texte doch gleich viel hübscher aus :-)

VolksPhone TopTen Diagramm

Neben der veränderten Textdarstellung habe ich auch die Konfigurationsmöglichkeiten des VolksPhone-Diagramms erweitert. Neue Parameter erlauben die Beschränkung der angezeigten Google-Platzierungen (im Beispiel 200) und eine Skalierung in X- und Y-Richtung. So habe ich die Breite in X-Richtung oben auf 133,3122,2 Prozent gestreckt. Damit liegen die Werte nicht mehr so dicht beieinander. Es ist ja noch viel Bewegung in den Top-Ten.

Zu den Top-10 kann man jetzt noch eine weitere URL anzeigen lassen, ich habe hier einfach mal die von Putzlowitsch gewählt. Ensprechend kann man zur Top-9 noch zwei weitere, zur Top-8 drei weitere usw. URLs anzeigen lassen. Damit kann man beobachten, wie sich die besten VolksPhone-Seiten im Vergleich zur eigenen Seite bewegen.

Sistrix hat bei dem von mir bereits erwähnten Volksphone-Monitoring jetzt auch eine schöne Grafik am Start. Da dort die Daten stündlich erhoben werden (bei mir aber nur zweimal am Tag) ergibt sich eine Art Volksphone-Top-5-Intraday-Chart :-) Feine Sache!

Nachtrag (15.9.): Standardmäßig werden nun auch die einzelnen Datenpunkte angezeigt. So kann man besser erkennen, welche Werte zu welchem Zeitpunkt gültig waren. Auch einzelne Datenpunkte (ohne Vorgänger und Nachfolger) werden dadurch nicht mehr unterdrückt

Ein Kommentar »

VolksPhone – das Diagramm

Man sollte ja immer auf die Meinungen, Hinweise und Wünsche der Benutzer hören. Deshalb gibt es hier nun die aktuelle Top-Ten beim VolksPhone-SEO-Wettbewerb. Es könnte auch eine Top-3 oder Top-5 sein.

Chart zu VolksPhone

Um es nochmal zu verdeutlichen, die obige Grafik zeigt die ersten zehn Treffer zum Begriff volksphone bei der Googlesuche, und zwar zu dem Zeitpunkt, der oben unter dem Begriff angezeigt wird. Das Diagramm entwickelt sich also dynamisch, Seiten verschwinden, andere kommen hinzu. Man kann aber immer sehen, wie sich die aktuellen VolksPhone-Top-Ten entwickelt haben.

So ist z.B. Timo Joost mit seinem Beitrag von irgendwo bei 90 auf Platz 9 geschossen, war dann kurz ganz weg und liegt nun schon zwei „Messungen“ auf dem achten Platz.

Nachtrag: Hier gibt es das Top-Ten-Diagramm auch für ältere Mitbürger, die die dünnen Linien nicht mehr so gut erkennen können :-) Sieht zwar nicht so „smooth“ aus, wirkt dafür aber bunter.

Keine Kommentare »

BornToBeASeo – ein Plugintest

borntobeaseo

Eigentlich will ich für diese Anfrage nur testen, ob das 123 Moderate Comment Notification-Plugin auch unter WordPress 2.8.x funktioniert. Da mir kein sinnvolles Thema eingefallen ist, muß nun wieder einmal borntobeaseo für den Test herhalten.

123 Moderate Comment Notification

Mit diesem Plugin kann man festlegen, wer alles eine E-Mail erhält, falls ein Kommentar z.B. zu borntobeaseo freigeschaltet werden muß. Normalerweise bekommt nur der Admin eine solche E-Mail. In Multiautorenblogs kann es aber sinnvoll sein, das auch die Autoren selbst Kommentare (sofern sie berechtigt sind) zu ihren eigenen Beiträgen moderieren, damit der Admin entlastet wird.

borntobeaseo – bitte jetzt kommentieren :-)

Damit ich nun sehe, ob tatsächlich auch Babsi eine E-Mail bekommt, muß hier jetzt bitte jemand einen Kommentar zu borntobeaseo hinterlassen. Danke!

Keine Kommentare »