我的HAproxy有问题。
我使用HAproxy作为负载平衡器,它将传入的HTTP请求分发到5个Web服务器。通常,使用负载均衡器的IP将客户请求转发到Web服务器。但是我需要从Web服务器请求某些内容的客户端IP或真实IP。因为我们需要记录真实客户端的IP。
我尝试在Web服务器上获取客户端的IP,但是到目前为止我还无法成功。我总是看到负载均衡器的IP。
我使用x-forward-for选项,但无法解决问题。之后,我找到了另一个选项“ source 0.0.0.0:80 usesrc clientip ”,但是在尝试运行HAproxy时遇到了错误,这与HAproxy的USE_TPROXY选项有关的编译需求有关。我做到了,我用USE_TPROXY选项重新编译了HAproxy,但是没有任何改变。我该怎么做才能了解真实客户的IP。
我的Linux内核版本是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?