我有两个后端服务器,我必须监控客户端 IP,默认情况下 HAProxy 发送的是服务器 IP 而不是客户端 IP。我找到了类似的解决方案这里但它不适用于我的情况。我的简单配置文件如下
这是我的 haproxy.cnf
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 3000
frontend main *:9090
acl url_static path_beg -i /static /javascript /stylesheets
acl url_static path_end -i .jpg .gif .png .css
#Rule for plays request
acl p2_url path_beg -i /plays
use_backend back2 if p2_url
acl valid_path path_beg -i /solr/select
use_backend back1 if valid_path
use_backend static if url_static
default_backend static
backend static
balance roundrobin
server static 127.0.0.1:80 check
backend back1
balance roundrobin
server app40 127.0.0.1:8900 check
backend back2
balance roundrobin
server app31 10.11.21.31:80 check
我希望在使用 back2 时发送客户端 IP(至少)。如何更新 haproxy 配置。我使用的是 Centos 7 和 HAProxy 1.5.14
答案1
我现在明白了,您实际上想知道后端服务器如何从日志中读取 x-forwarded-for 标头?
尝试以下说明Windows IIS XFF或者Apache XFF。