With 1.5-dev22, we have a scenario where haproxy is saying the client closed the connection, but really the server is the one that closed it.
Here is the log entry from haproxy: haproxy[12540]: 10.230.0.195:33580 storage_upd storage_upd/storage_upd_2 0/0/0/522/555 0/0/0/0/0 0/0 412/271 200 CD-- 73E3-20FF5 + GET /1/public_link/1BMcSfqg3OM4Ng HTTP/1.1 The log format is defined as: capture request header X-Request-Id len 64 log-format %ci:%cp\ %ft\ %b/%s\ %Tq/%Tw/%Tc/%Tr/%Tt\ %ac/%fc/%bc/%sc/%rc\ %sq/%bq\ %U/%B\ %ST\ %tsc\ %hrl\ +\ %r Attached is the haproxy config, along with a packet capture between haproxy and the backend server. The packet capture shows that the backend server listening on port 4001 sent a TCP FIN packet to haproxy first. Therefore haproxy shouldn't have logged it with "C---" -Patrick
global log 127.0.0.1 local0 maxconn 20480 user haproxy group haproxy daemon stats socket /var/run/haproxy.sock defaults log global mode http option httplog option dontlognull retries 3 option redispatch timeout connect 5000 timeout client 60000 timeout server 170000 option clitcpka option srvtcpka option abortonclose option splice-auto stats enable stats uri /haproxy/stats stats refresh 5 stats auth user:pass frontend storage_upd bind 0.0.0.0:80 bind 0.0.0.0:81 accept-proxy default_backend storage_upd maxconn 20000 capture request header X-Request-Id len 64 http-request add-header X-Request-Timestamp %Ts.%ms log-format %ci:%cp\ %ft\ %b/%s\ %Tq/%Tw/%Tc/%Tr/%Tt\ %ac/%fc/%bc/%sc/%rc\ %sq/%bq\ %U/%B\ %ST\ %tsc\ %hrl\ +\ %r backend storage_upd fullconn 20000 server storage_upd_1 127.0.0.1:4000 check server storage_upd_2 127.0.0.1:4001 check server storage_upd_3 127.0.0.1:4002 check server storage_upd_4 127.0.0.1:4003 check
haproxy.pcap
Description: Binary data