я использую HAProxy 1.3.26
на моем CentOS 5.8
проксировать все запросы на выделенный сервер. Я использую HAProxy только для проксирования HTTP и HTTPS на один сервер, поэтому балансировки нагрузки нет.
Мой haproxy.cfg
довольно просто:
global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
maxconn 4096
user haproxy
group haproxy
daemon
defaults
log global
option dontlognull
option httpclose
option forwardfor
clitimeout 60000
srvtimeout 60000
contimeout 5000
retries 3
option redispatch
listen http 192.168.0.1:80
mode tcp
option tcplog
maxconn 10000
server web01 192.0.1.13:80 maxconn 5000
listen https 192.168.0.1:443
mode tcp
maxconn 10000
server web01 192.0.1.13:443 maxconn 5000
где:
192.168.0.1 - server where HAProxy is installed
192.0.1.13 - server to which HTTP requests are forwarded
Я хочу видеть IP-адреса клиентов в моем Apache 2.2.3
доступ к журналам. Этот вариант обычно достигается добавлением HTTP X-Forwarded-For
заголовок, а затем считывая его в журналах веб-сервера. Итак, я добавил в httpd.conf следующие строки:
LogFormat "%h %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" combined
LogFormat "%{X-Forwarded-For}i %l %u %t \"%r\" %s %b \"%{Referer}i\" \"%{User-agent}i\"" combined_forwarded
SetEnvIfNoCase X-Forwarded-For "." from_proxy=1
CustomLog logs/access_log combined env=!from_proxy
CustomLog logs/access_log combined_forwarded env=from_proxy
Проблема в том, что единственный зарегистрированный IP-адрес 192.168.0.1
(Сервер HAProxy). Я пробовал разные конфигурации, читал документацию, искал в Google, но до сих пор не могу понять, почему IP-адреса клиентов не регистрируются.
Я чувствую, что мне не хватает чего-то простого, поскольку конфигурации очень простые. Пожалуйста, помогите поправить конфиги, если возможно.
Спасибо за любую помощь.
Не забывайте, что это не сработает для прокси https, поскольку haproxy не сможет изменять содержимое зашифрованного сеанса. Вы также можете проверить модуль mod_rpaf для Apache, который упрощает все это.