Donnerstag, 30. Juli 2009

X-Forwarded-For oder Woher kommst Du?

Das Forwarding von HTTP Anfragen aus dem Internet über die DMZ erledigt der Membrane Monitor jetzt problemlos. Das letzte Problem war, dass unsere logfiles alle so aussahen:

127.0.0.1 - - [30/Jul/2009:09:47:27 +0000] "GET /open-source/soap-monitor-howto.htm HTTP/1.1" 200 3178
127.0.0.1 - - [30/Jul/2009:09:47:31 +0000] "GET /open-source/jaxws-client-monitor-howto.htm HTTP/1.1" 200 3968
127.0.0.1 - - [30/Jul/2009:09:47:32 +0000] "GET /membrane-add-rule.png HTTP/1.1" 200 27561
127.0.0.1 - - [30/Jul/2009:09:47:34 +0000] "GET /open-source/ HTTP/1.1" 200 2822
127.0.0.1 - - [30/Jul/2009:09:47:36 +0000] "GET /open-source/soa-registry-repository/ HTTP/1.1" 200 4981

Anstatt der IP Adresse des Rechners auf dem der Browser läuft wird die IP Adresse des reverse Proxy abgespeichert. Für das Durchschleusen der IP Adresse des ursprünglichen Clients haben die Entwickler des Squid caching Proxy Servers das HTTP Header Feld X-Forwarded-For eingeführt. Dabei handelt es sich nicht um einen richtigen Standard sondern nur um einen Defacto Standard, der aber ganz gut akzeptiert ist. Ab der Version 0.9.3 ergänzt Membrane Monitor jetzt weitergeleitete HTTP Anfragen um dieses Feld. Damit Tomcat das Feld in eine Accesslog Datei schreibt mussten wir noch die Konfiguration für das AccessLogValve ändern. Damit die IP Adresse des Clients mit dem Wert von X-Forwarded-For ausgetauscht wird haben wir das Log Pattern combinded mit einzelnen Werten nachgebaut.

<Context>
<Valve className="org.apache.catalina.valves.AccessLogValve"
prefix="praxis-godesberg.de." suffix=".txt"
pattern='%{x-forwarded-for}i %l %u %t "%r" %s %b "%{referer}i" "%{user-agent}i"'/>
</Context>


Jetzt steht dem Betrieb mehrerer Web Server an einer festen IP nichts mehr im Weg. Zeit einen neuen Server zu bestellen :-) .

Keine Kommentare:

Kommentar veröffentlichen