mod_proxy_balancer - Client IP übergeben?

Apache, Lighttpd, nginx, Cherokee
djbennyf
Posts: 176
Joined: 2003-04-06 19:44

mod_proxy_balancer - Client IP übergeben?

Post by djbennyf » 2008-01-30 12:22

Hallo,

ich habe erfolgreich einen Apache Balancer mit mod_proxy_balancer aufgesetzt.

Problem ist nur, dass in den Backendservern die IP des FRONTEND Servers und nicht die des eigentlichen Browsers erscheint.

Wie kann ich dies umgehen?

Oder gibt es eine ander Art für den load Balancer. Problem ist, dies sollte eigentlich nur für eine VirtualHost sein, also nicht alle Anfragen auf Port80 sollen auf den LoadBalancer laufen.

Hat jemand eine Lösung?

Andere Software?

Andere Einstellungen?

djbennyf
Posts: 176
Joined: 2003-04-06 19:44

Re: mod_proxy_balancer - Client IP übergeben?

Post by djbennyf » 2008-01-30 13:24

PS:

Wenn ich:

Code: Select all

LogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b 
"%{Referer}i" "%{User-Agent}i""                     balancer


verwende, funktioniert es zwar beim Zugriff über den Balancer, aber nicht beim direkten Zugriff (www1.bla.de).

Kann ich im LogFormat eine art "Case" vwerenden bzw wie mache ich zwei verschiedene VirtualHosts für eine host. Sprich wenn der LB auf die Host szugreift wird LogFormat balancer genommen ansonsten LogFormat normal?

dotme
Posts: 150
Joined: 2004-12-15 16:48

Re: mod_proxy_balancer - Client IP übergeben?

Post by dotme » 2008-01-30 13:35

Bei einem Setup als Reverse-Proxy übermittelt Apache unter anderem die ursprüngliche IP des Clients in speziellen Headern (s. http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#x-headers) an das Backend. Ich hoffe das trifft auch für Dein Balancer-Setup zu.
Wenn Deine Backends ebenfalls Apaches sind kannst Du Ihnen mit den Modulen "mod_extract_forwarded" oder "mod_rpaf" die ursprüngliche IP vorgaukeln.

Roger Wilco
Administrator
Administrator
Posts: 6001
Joined: 2004-05-23 12:53

Re: mod_proxy_balancer - Client IP übergeben?

Post by Roger Wilco » 2008-01-30 14:35

Ohne zusätzliche Module müsste es so gehen (ungetestet):

Code: Select all

# 192.168.1.1 = Adresse des Loadbalancers
SetEnvIf Remote_Addr ^192.168.1.1$ through_balancer

LogFormat "%{X-Forwarded-For}i %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" balancer
LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" no_balancer

CustomLog access.log balancer env=through_balancer
CustomLog access.log no_balancer env=!through_balancer

djbennyf
Posts: 176
Joined: 2003-04-06 19:44

Re: mod_proxy_balancer - Client IP übergeben?

Post by djbennyf » 2008-01-30 15:06

Funktioniert Danke :)

Etwas Offtopic:

Hat jemand ein perl/php/c script, dass die lbfactoren automatisch anpasst bzw server automatisch disabled?