我正在将 HAProxy 设置为负载均衡器,并且可以让它工作(它将请求转发到后端)。但是,我无法让它将每个请求记录到文件中。我可以看到如下系统类型消息:
Mar 3 19:36:33 rg-staging-balancer haproxy-systemd-wrapper[29244]: haproxy-systemd-wrapper: SIGTERM -> 8750.
Mar 3 19:36:33 rg-staging-balancer haproxy-systemd-wrapper[29244]: haproxy-systemd-wrapper: exit, haproxy RC=0
Mar 3 19:36:33 rg-staging-balancer haproxy-systemd-wrapper[18109]: haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
但不是个别请求。我正在运行 Ubuntu 16.04,HAProxy 1.7.2-1ppa1~xenial,配置如下:
global
log 127.0.0.1 local1 notice
tune.ssl.default-dh-param 2048
defaults
timeout client 10s
timeout server 10s
timeout connect 10s
frontend http
reqadd X-Forwarded-Proto:\ https
maxconn 2000
bind :443 ssl crt /etc/ssl/haproxy.pem
default_backend rails_servers
backend rails_servers
mode http
option httpchk
option forwardfor
server rg_staging 192.168.203.139:80
关于如何记录每个请求有什么想法吗?
答案1
您是否尝试过在 rsyslog 上启用 UDP 日志记录(默认情况下禁用)并为 LOCAL1 添加一个功能(您正在使用的功能)?
确保这些行没有被注释掉/etc/rsyslog.conf
$ModLoad imudp
$UDPServerRun 514
添加此行将 HAProxy 记录到上述配置文件中:
local1.* /var/log/haproxy.log
答案2
你必须把
mode http
option httplog
在您的前端以记录 HTTP 请求。