Hi all, I want to load balance a new server application that generally sends http code 204 - to save bandwidth and to avoid client-side caching. In fact it only exchanges cookie data, thus no real content is delivered anyway.
When requests are made via haproxy, the backend - as intended - delivers a code 204 but haproxy instead turns it into a code 502. Unfortunately I cannot use tcp mode because the server app needs the client's IP address. Is there something else I can do? Request directly to the appserver: bash-3.2$ curl --verbose "http://cm01.example.com:8000/c" * About to connect() to cm01.example.com port 8000 (#0) * Trying 22.33.44.55... connected * Connected to cm01.example.com (22.33.44.55) port 8000 (#0) > > GET /c HTTP/1.1 > > User-Agent: curl/7.19.6 (i386-apple-darwin9.8.0) libcurl/7.19.6 OpenSSL/0.9.8k zlib/1.2.3 > > Host: cm01.example.com:8000 > > Accept: */* > > < HTTP/1.1 204 No Content < Date: Wed, 28 Oct 2009 11:56:44 GMT < Server: Jetty/5.1.11RC0 (Linux/2.6.21.7-2.fc8xen amd64 java/1.6.0_16 < Expires: Thu, 01 Jan 1970 00:00:00 GMT < Set-Cookie: pid=08f0b764185;Path=/;Domain=.example.com;Expires=Thu, 16-Oct-59 11:56:44 GMT < Connection: close < * Closing connection #0 The above is how it is intended to look. And now via haproxy: bash-3.2$ curl --verbose "http://cm01.example.com/c" * About to connect() to cm01.example.com port 80 (#0) * Trying 22.33.44.55... connected * Connected to cm01.example.com (22.33.44.55) port 80 (#0) > > GET /c HTTP/1.1 > > User-Agent: curl/7.19.6 (i386-apple-darwin9.8.0) libcurl/7.19.6 OpenSSL/0.9.8k zlib/1.2.3 > > Host: cm01.example.com > > Accept: */* > > * HTTP 1.0, assume close after body < HTTP/1.0 502 Bad Gateway < Cache-Control: no-cache < Connection: close < Content-Type: text/html < <html><body><h1>502 Bad Gateway</h1> The server returned an invalid or incomplete response. </body></html> * Closing connection #0