HAproxy에 문제가 있습니다.
들어오는 HTTP 요청을 5 개의 웹 서버에 배포하는로드 밸런서로 HAproxy를 사용합니다. 일반적으로 클라이언트 요청은로드 밸런서의 IP를 사용하여 웹 서버로 전달됩니다. 그러나 웹 서버에서 무언가를 요청하는 클라이언트 IP 또는 실제 IP가 필요합니다. 실제 클라이언트의 IP를 기록해야하기 때문입니다.
웹 서버에서 클라이언트의 IP를 얻으려고 노력했지만 지금까지는 성공할 수 없습니다. 항상로드 밸런서의 IP가 보입니다.
x-forward-for 옵션을 사용하지만 문제가 해결되지 않았습니다. 그 후 다른 옵션 " source 0.0.0.0:80 usesrc clientip "을 찾았지만 HAproxy의 USE_TPROXY 옵션을 사용하여 컴파일 요구에 관한 HAproxy를 실행하는 동안 오류가 발생했습니다. USE_TPROXY 옵션을 사용하여 HAproxy를 다시 컴파일하지만 아무것도 변경하지 않았습니다. 실제 고객의 IP를 배우기 위해 무엇을 할 수 있습니까?
내 리눅스 커널 버전은 2.6.32-34입니다. 커널이 투명한 프록시를 지원한다는 것을 의미합니다. UBUNTU 10.4 LTS를 사용합니다
내 설정 파일이 여기 있습니다
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를 배우도록 도와 줍니까?