Назад | Перейти на главную страницу

haproxy не передает X_FORWARD_FOR в HTTP POST

Я установил HAProxy с

option forwardfor

параметр, чтобы он передавал IP-адрес пользователя в PHP через $ _SERVER ["HTTP_X_FORWARDED_FOR"].

Если запрос страницы не является 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

Из руководства HAProxy:

Важно отметить, что пока HAProxy не поддерживает соединения keep-alive, только первый запрос соединения получит заголовок. По этой причине важно убедиться, что при использовании этой опции установлена ​​опция httpclose.

Примеры: # Общедоступный HTTP-адрес также используется stunnel на том же компьютере во внешнем интерфейсе www mode http option forward for except 127.0.0.1 # stunnel уже добавляет заголовок

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

См. Также: «option httpclose»

Итак, вы можете попробовать вариант httpclose, но я бы попробовал его в нерабочее время или во время теста в случае снижения производительности?