I had default version of haproxy from ubuntu, which was 1.5.x, so I decided to
update to latest stable first before I report the bug.
After I update to latest 1.7.x haproxy stops working with my config. When I was
trying to start I was getting:
Job for haproxy.service failed because the control process exited with error
code. See "systemctl status haproxy.service". systemctl status haproxy.service
wouldn't show any info about why haproxy fails. FYI, with nginx it clearly
points to what nginx doesn't like, and there is no need to guess. Can this be
fixed to properly show errors?
So, back to my original issue.
Basically, I added only this to the default config:
backend nodejs
timeout server 1h
timeout connect 1s
option httpclose
option forwardfor
server server1 127.0.0.1:80 #check
backend nodejs_test
timeout server 1h
timeout connect 1s
option httpclose
option forwardfor
server server2 127.0.0.1:3000
option http-no-delay
frontend all
bind *:8090
timeout client 1h
option http-no-delay
acl is_test path_beg /test
use_backend nodejs_test if is_test
default_backend nodejs
mode http
I do not run anything on port 80, now I make a request to example.com/test and
haproxy totally fails. 1.5.x would fail with "ERROR 503: Service Unavailable."
on first request and would work on second one, 1.7.x doesn't fail that
miserably, it just doesn't work at all, and my wget auto-retries 3 times and
then it works.
I inspected with wireshark what's going on and I see that haproxy when handling
my request tries to connect to default backend on port 80 (and I don't run
anything on port 80 atm). It's clearly a bug, it shouldn't even touch port 80,
and should directly connect to nodejs_test on port 3000.
Another point: why don't you host your project on github, it will be way more
popular, it would be much easier for anybody to contribute etc. Now, it does
feel like haproxy should be avoided, as there is no bugtracker, mailing list
that feels broken, etc... feels like it's dying.