Я установил 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, но я бы попробовал его в нерабочее время или во время теста в случае снижения производительности?