Ich habe ein Problem mit HAproxy.
Ich benutze HAproxy als Load Balancer, der eingehende http-Anfragen an 5 Webserver verteilt. Normalerweise wird eine Client-Anfrage an Webserver mit der Loadbalancer-IP weitergeleitet. Aber ich brauche Clients IPs oder echte IPs, die etwas von Webservern anfordern. Weil wir die IPs des echten Clients protokollieren müssen.
Ich versuche die IPs des Kunden auf Webservern zu erhalten, kann aber bisher keinen Erfolg haben. Immer sehe ich die IP des Load Balancers.
Ich verwende die Option x-forward-for, aber das Problem ist noch nicht gelöst. Danach habe ich eine andere Option " source 0.0.0.0:80 usesrc clientip " gefunden, aber beim Versuch, HAproxy auszuführen, ist ein Fehler aufgetreten, bei dem es um die Kompilierungsanforderungen mit der USE_TPROXY-Option von HAproxy geht. Ich habe es geschafft, ich kompiliere HAproxy mit der USE_TPROXY-Option neu, aber es ändert sich nichts. Was kann ich tun, um die IPs des echten Kunden zu erfahren?
Meine Linux-Kernel-Version ist 2.6.32-34. Ich meine, dass der Kernel transparenten Proxy unterstützt. und ich benutze UBUNTU 10.4 LTS
Meine Konfigurationsdatei ist hier
global
maxconn 100000
uid 99
gid 99
daemon
defaults
option forwardfor except 127.0.0.1
mode http
(1)source 0.0.0.0:80 interface hdr_ip(x-forwarded-for,-1)
(2)source 0.0.0.0:80 usesrc clientip
contimeout 5000
clitimeout 50000
srvtimeout 50000
listen myWeb 0.0.0.0:80
mode http
balance source
option forwardfor header X-Client
option http-server-close
stats enable
stats refresh 10s
stats hide-version
stats scope .
stats uri /lb?stats
stats realm LB2\ Statistics
stats auth admin:xXx
server S1 192.168.1.117:80 check inter 2000 fall 3
server S2 192.168.1.116:80 check inter 2000 fall 3
server S3 192.168.1.118:80 check inter 2000 fall 3
(1) (2) Beim Testen von HAproxy habe ich eine dieser beiden Leitungen verwendet.
Hilft mir jemand dabei, die realen IPs der Clients zu erfahren, die von unseren Servern angefordert werden?