Getting 502 instead of 503 when all backend servers are down running HAProxy behind Apache

Posted by scarba05 on Server Fault See other posts from Server Fault or by scarba05
Published on 2012-05-28T11:00:34Z Indexed on 2012/06/06 22:41 UTC
Read the original article Hit count: 362

I'm testing running HAProxy as a dedicated load balancer behind Apache 2.2, replacing our current configuration where we use Apache's load balancer. In our current, Apache only, set-up if all the backend (origin) servers are down Apache will serve a 503 service unavailable message. With HAProxy I get a 502 bad gateway response.

I'm using a simple reverse proxy rewrite rule in Apache

RewriteRule ^/(.*) http://127.0.0.1:8000/$1 [last,proxy]

In HAProxy I have the following (running in default tcp mode)

defaults
    log             global
    option          tcp-smart-accept
    timeout connect 7s
    timeout client  60s
    timeout queue   120s
    timeout server  60s

listen my_server 127.0.0.1:8000
    balance leastconn
    server backend1 127.0.0.1:8001 check observe layer4 maxconn 2
    server backend1 127.0.0.1:8001 check observe layer4 maxconn 2

Testing connecting directly to the load balancer when the backend servers are down:

[root@dev ~]# wget http://127.0.0.1:8000/ test.html
--2012-05-28 11:45:28--  http://127.0.0.1:8000/
Connecting to 127.0.0.1:8000... connected.
HTTP request sent, awaiting response... No data received.

So presumably this is down to the fact that HAProxy accepts the connection and then closes it.

© Server Fault or respective owner

Related posts about apache2

Related posts about load-balancing