haproxy 没有在 HTTP POST 上传递 X_FORWARD_FOR

haproxy 没有在 HTTP POST 上传递 X_FORWARD_FOR

我已经使用

option forwardfor

选项,这样它就会通过 $_SERVER[“HTTP_X_FORWARDED_FOR”] 将用户的 IP 传递给 PHP。

如果页面请求不是 POST,则填充成功,但如果是 POST,则不会填充。您知道我哪里做错了吗?

感谢大家!

我的整个 HAProxy 配置文件供参考:

global
    log 127.0.0.1   local0
    log 127.0.0.1   local1 notice
    #log loghost    local0 info
    maxconn 4096
    #chroot /usr/share/haproxy
    user haproxy
    group haproxy
    daemon
    #debug
    #quiet

defaults
    log global
    mode    http
    option  httplog
    option  dontlognull
    retries 3
    option redispatch
    maxconn 4096
    contimeout  5000
    clitimeout  50000
    srvtimeout  50000

listen webfarm :80
    mode http
    balance roundrobin
    option forwardfor
    server webA 192.168.240.4 weight 1 maxconn 2048 check
    server webB 192.168.240.3 weight 1 maxconn 2048 check

listen smtp :25
    mode tcp
    option tcplog
    balance roundrobin

    server smtp 192.168.240.4:25 check

答案1

来自HAProxy手册:

需要注意的是,只要 HAProxy 不支持保持连接,则只有连接的第一个请求才会收到标头。因此,使用此选项时,务必确保设置了“option httpclose”。

示例:# 同一台机器上的 stunnel 也使用公共 HTTP 地址前端 www 模式 http 选项 forwardfor except 127.0.0.1# stunnel 已经添加了标头

# Those servers want the IP Address in X-Client
backend www
    mode http
    option forwardfor header X-Client

另请参阅:“选项 httpclose”

因此,您可以尝试 httpclose 选项,但我会在下班后或在测试中尝试它,以免性能下降?

相关内容