HAproxy ile ilgili bir sorunum var.
HAproxy'yi, gelen http isteklerini 5 web sunucusuna dağıtan yük dengeleyici olarak kullanıyorum. normalde bir istemci isteği yük dengeleyicisinin IP'si olan web sunucularına iletilir. Ancak istemcilerin IP'lerine veya web sunucularından bir şey isteyen gerçek IP'lere ihtiyacım var. Çünkü gerçek müşterinin IP'lerini kaydetmemiz gerekiyor.
Web sunucularında müşterinin IP'lerini almaya çalışıyorum ama şimdiye kadar başarılı olamıyorum. Her zaman yük dengeleyicinin IP'sini görüyorum.
X-forward-for seçeneğini kullanıyorum ancak problem çözülmedi. Bundan sonra başka bir seçenek " kaynak 0.0.0.0:80 usesrc clientip " bulundu ama HAproxy USE_TPROXY seçeneği ile derleme ihtiyaçları hakkında olan HAproxy çalıştırmak çalışırken eror var. Yaptım, HAproxy'yi USE_TPROXY seçeneğiyle yeniden derledim, ancak hiçbir şey değiştirmiyor. gerçek müşterinin IP'lerini öğrenmek için ne yapabilirim?
Linux çekirdeğimin sürümü 2.6.32-34 Yani çekirdek şeffaf proxy'yi destekliyor. ve UBUNTU 10.4 LTS kullanıyorum
benim yapılandırma dosyam burada
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) HAproxy'yi test ederken bu iki çizgiden birini kullandım.
Birisi sunucularımızdan talepte bulunan istemcilerin gerçek IP'lerini öğrenmeme yardımcı oluyor mu?