Hi,

We have been trying to get the new keep-alive functionality, with the
http-server-close option, to work with our Jetty back-end web servers.
There seems to be something in the response from the Jetty servers
that makes HaProxy always add a Connection: close header in the
response to the client though.

Running the same HaProxy configuration with an Apache backend works fine.

I've included examples below showing the requests and responses when
going directly to the backend server, bypassing haproxy, and then the
same request going through haproxy, for the Apache and Jetty backends.

One obvious difference in the response from the Apache server is that
it includes explicit keep-alive headers, but if I understand the
matrix in the connection-header.txt (included in doc/internals) that
shouldn't matter - as long as the Jetty server doesn't send a
Connection: Close, includes a Content-Length header and both client
and server use http/1.1 HaProxy should not add a Connection: Close
header in the response to the client.

Any ideas what might be causing our problems?

Thank you,

Patrik

   ---------------
   JETTY backend.
   ---------------

Direct:
-------

*Request*

GET /res/jalogo.png HTTP/1.1
Host: jetty.jalbum.test
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US;
rv:1.9.2) Gecko/20100115 Firefox/3.6 GTB6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

*Response*

HTTP/1.1 200 OK
Date: Mon, 29 Mar 2010 15:32:10 GMT
Expires: Tue, 30 Mar 2010 15:32:10 GMT
Content-Type: image/png
Cache-Control: max-age=86400
Last-Modified: Tue, 16 Mar 2010 10:55:16 GMT
Accept-Ranges: bytes
Content-Length: 7491
Server: Jetty(6.1.21)

Through HaProxy:
----------------

*Request*

GET /res/jalogo.png HTTP/1.1
Host: jalbum.test
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US;
rv:1.9.2) Gecko/20100115 Firefox/3.6 GTB6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

*Response*

HTTP/1.1 200 OK
Date: Mon, 29 Mar 2010 15:34:42 GMT
Expires: Tue, 30 Mar 2010 15:34:42 GMT
Cache-Control: max-age=86400
Content-Type: image/png
Last-Modified: Tue, 16 Mar 2010 10:55:16 GMT
Accept-Ranges: bytes
Connection: close
Server: Jetty(6.1.21)

   ---------------
   APACHE backend.
   ---------------

Direct:
-------

*Request*

GET /gifs/green.gif HTTP/1.1
Host: apache.jalbum.test
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US;
rv:1.9.2) Gecko/20100115 Firefox/3.6 GTB6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

*Response*

HTTP/1.1 200 OK
Date: Mon, 29 Mar 2010 15:37:15 GMT
Server: Apache/2.2.10 (Linux/SUSE)
Last-Modified: Wed, 27 May 2009 15:02:43 GMT
Etag: "de39-76-46ae622a36ac0"
Accept-Ranges: bytes
Content-Length: 118
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: image/gif

Through HaProxy:
----------------

*Request*

GET /gifs/green.gif HTTP/1.1
Host: jalbum.test
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; en-US;
rv:1.9.2) Gecko/20100115 Firefox/3.6 GTB6
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache

*Response*

HTTP/1.1 200 OK
Date: Mon, 29 Mar 2010 15:26:17 GMT
Server: Apache/2.2.10 (Linux/SUSE)
Last-Modified: Wed, 27 May 2009 15:02:43 GMT
Etag: "de39-76-46ae622a36ac0"
Accept-Ranges: bytes
Content-Length: 118
Content-Type: image/gif

Reply via email to