On Mon, Apr 26, 2010 at 03:41:03PM +0200, Cyril Bontй wrote: > Hi Dmitry, > > Le lundi 26 avril 2010 13:57:12, Dmitry Sivachenko a йcrit : > > When I put that server behind haproxy (version 1.4.4) I see the following: > > > > > > 1) GET <some URL> HTTP/1.1 > > Host: host.pp.ru > > User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.2.3) > > Gecko/2010041 > > 4 Firefox/3.6.3 > > Accept: text/javascript, application/javascript, */* > > Accept-Language: en-us,ru;q=0.7,en;q=0.3 > > Accept-Encoding: gzip,deflate > > Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 > > Keep-Alive: 115 > > Connection: keep-alive > > > > 2) > > HTTP/1.1 200 OK > > Date: Mon, 26 Apr 2010 11:45:01 GMT > > Expires: Mon, 26 Apr 2010 11:46:01 GMT > > Content-Type: text/javascript; charset=utf-8 > > Connection: Close > > > > <some data> > > > > I have > > mode http > > option http-server-close > > option http-pretend-keepalive > > > > in my config (tried both with and without http-pretend-keepalive). > > > > Can you please explain in more detail what server makes wrong and why > > haproxy > > adds Connection: Close header > > (and why Firefox successfully uses HTTP keep-alive with the same server > > without > > haproxy). > > HAProxy can't accept the connection to be keep-alived as it doesn't provide a > Content-Length (nor the communication allows chunked transfer). > Try to add a Content-Length header equal to your data length and Keep-Alive > should be accepted. >
Okay, I'll try, thanks for suggestion. By the way: why haproxy behaves that way? What is the technical problem to allow HTTP keep-alive with chunked transfer? AFAIK last chunk is specially formed to indicate the end of data so haproxy should see the end of transmitted data without Content-Length header?

