ฉันมีปัญหากับ HAproxy
ฉันใช้ HAproxy เป็น load balancer ซึ่งกระจายการร้องขอ http ขาเข้าไปยัง 5 เว็บเซิร์ฟเวอร์ โดยปกติคำขอของลูกค้าจะถูกส่งต่อไปยังเว็บเซิร์ฟเวอร์ที่มี IP ของ loadbalancer แต่ฉันต้องการ IP ของลูกค้าหรือ IP จริงที่ร้องขอบางอย่างจากเว็บเซิร์ฟเวอร์ เพราะเราจำเป็นต้องบันทึก IP ของลูกค้าจริง
ฉันพยายามรับ IP ของลูกค้าบนเว็บเซิร์ฟเวอร์ แต่ฉันไม่สามารถประสบความสำเร็จได้ในตอนนี้ ฉันเห็น IP ของตัวโหลดบาลานซ์เสมอ
ฉันใช้ตัวเลือก x-forward-for แต่ไม่สามารถแก้ปัญหาได้ หลังจากนั้นฉันพบตัวเลือกอื่น " source 0.0.0.0:80 usesrc clientip " แต่ฉันมี eror ในขณะที่พยายามเรียกใช้ HAproxy ซึ่งเป็นเรื่องเกี่ยวกับการรวบรวมความต้องการด้วยตัวเลือก USE_TPROXY ของ HAproxy ฉันทำแล้วฉันจะคอมไพล์ HAproxy ด้วยตัวเลือก USE_TPROXY แต่ไม่เปลี่ยนแปลงอะไรเลย ฉันจะทำอย่างไรเพื่อเรียนรู้ IP ของลูกค้าจริง
เคอร์เนลรุ่น linux ของฉันคือ 2.6.32-34 ฉันหมายความว่าเคอร์เนลรองรับพร็อกซีแบบโปร่งใส และฉันใช้ UBUNTU 10.4 LTS
ไฟล์ config ของฉันอยู่ที่นี่
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 ฉันใช้หนึ่งในสองบรรทัดนี้
มีใครช่วยฉันเรียนรู้ IP ที่แท้จริงของลูกค้าที่ได้รับการร้องขอจากเซิร์ฟเวอร์ของเราหรือไม่?