Hi, many thanks, your link was exactly what i needed ! :D
Regards, Shadow. 2012/11/29 Baptiste <bed...@gmail.com>: > Hi David, > > For more information about HAProxy and websockets, please have a look at: > http://blog.exceliance.fr/2012/11/07/websockets-load-balancing-with-haproxy/ > > It may give you some hints and point you to the right direction. > > cheers > > > On Wed, Nov 28, 2012 at 6:34 PM, david rene comba lareu > <shadow.of.sou...@gmail.com> wrote: >> Thanks willy, i solved it as soon you answer me but i'm still dealing >> to the configuration to make it work as i need: >> >> my last question was this: >> http://serverfault.com/questions/451690/haproxy-is-caching-the-forwarding >> and i got it working, but for some reason, after the authentication is >> made and the some commands are sent, the connection is dropped and a >> new connection is made as you can see here: >> >> info - handshake authorized 2ZqGgU2L5RNksXQRWuhi >> debug - setting request GET /socket.io/1/websocket/2ZqGgU2L5RNksXQRWuhi >> debug - set heartbeat interval for client 2ZqGgU2L5RNksXQRWuhi >> debug - client authorized for >> debug - websocket writing 1:: >> debug - websocket received data packet >> 5:3+::{"name":"ferret","args":["tobi"]} >> debug - sending data ack packet >> debug - websocket writing 6:::3+["woot"] >> info - transport end (socket end) >> debug - set close timeout for client 2ZqGgU2L5RNksXQRWuhi >> debug - cleared close timeout for client 2ZqGgU2L5RNksXQRWuhi >> debug - cleared heartbeat interval for client 2ZqGgU2L5RNksXQRWuhi >> debug - discarding transport >> debug - client authorized >> info - handshake authorized WkHV-B80ejP6MHQTWuhj >> debug - setting request GET /socket.io/1/websocket/WkHV-B80ejP6MHQTWuhj >> debug - set heartbeat interval for client WkHV-B80ejP6MHQTWuhj >> debug - client authorized for >> debug - websocket writing 1:: >> debug - websocket received data packet >> 5:4+::{"name":"ferret","args":["tobi"]} >> debug - sending data ack packet >> debug - websocket writing 6:::4+["woot"] >> info - transport end (socket end) >> >> i tried several configurations, something like this: >> http://stackoverflow.com/questions/4360221/haproxy-websocket-disconnection/ >> >> and also declaring 2 backends, and using ACL to forward to a backend >> that has the >> option http-pretend-keepalive >> when the request is a websocket request and to a backend that has >> http-server-close when the request is only for socket.io static files >> or is any other type of request that is not websocket. >> >> i would clarify that http-server-close is only on the nginx backend >> and in the static files backend, http-pretend-keepalive is on frontend >> all and in the websocket backend. >> >> anyone could point me to the right direction? i tried several >> combinations and none worked so far :( >> >> thanks in advance for your time and patience :) >> >> 2012/11/24 Willy Tarreau <w...@1wt.eu>: >>> Hi David, >>> >>> On Sat, Nov 24, 2012 at 09:26:56AM -0300, david rene comba lareu wrote: >>>> Hi everyone, >>>> >>>> i'm little disappointed with a problem i'm having trying to configure >>>> HAproxy in the way i need, so i need a little of help of you guys, >>>> that knows a lot more than me about this, as i reviewed all the >>>> documentation and tried several things but nothing worked :(. >>>> >>>> basically, my structure is: >>>> >>>> HAproxy as frontend, in 80 port -> forwards by default to webserver >>>> (in this case is apache, in other machines could be nginx) >>>> -> depending the domain >>>> and the request, forwards to an Node.js app >>>> >>>> so i have something like this: >>>> >>>> global >>>> log 127.0.0.1 local0 >>>> log 127.0.0.1 local1 notice >>>> maxconn 4096 >>>> user haproxy >>>> group haproxy >>>> daemon >>>> >>>> defaults >>>> log global >>>> mode http >>>> maxconn 2000 >>>> contimeout 5000 >>>> clitimeout 50000 >>>> srvtimeout 50000 >>>> >>>> >>>> frontend all 0.0.0.0:80 >>>> timeout client 5000 >>>> default_backend www_backend >>>> >>>> acl is_soio url_dom(host) -i socket.io #if the request contains socket.io >>>> >>>> acl is_chat hdr_dom(host) -i chaturl #if the request comes from chaturl.com >>>> >>>> use_backend chat_backend if is_chat is_soio >>>> >>>> backend www_backend >>>> balance roundrobin >>>> option forwardfor # This sets X-Forwarded-For >>>> timeout server 5000 >>>> timeout connect 4000 >>>> server server1 localhost:6060 weight 1 maxconn 1024 check #forwards to >>>> apache2 >>>> >>>> backend chat_backend >>>> balance roundrobin >>>> option forwardfor # This sets X-Forwarded-For >>>> timeout queue 50000 >>>> timeout server 50000 >>>> timeout connect 50000 >>>> server server1 localhost:5558 weight 1 maxconn 1024 check #forward to >>>> node.js app >>>> >>>> my application uses socket.io, so anything that match the domain and >>>> has socket.io in the request, should forward to the chat_backend. >>>> >>>> The problem is that if i load directly from the browser, let say, the >>>> socket.io file (it will be something like >>>> http://www.chaturl.com/socket.io/socket.io.js) loads perfectly, but >>>> then when i try to load index.html (as >>>> http://www.chaturl.com/index.html) most of the times, is still >>>> redirect to socket.io. after refreshing a few time, it finally loads >>>> index.html, but then, doesn't load the socket.io.js file inserted in >>>> the file (why it redirect to the apache server, and not the node.js >>>> app). so as i said, it sort of "caching" the request. >>>> >>>> i tried several ACL combinations, i disabled the domain check, only >>>> checking for socket.io but is still the same. Reading again the >>>> documentation i tried to use hdr_dir, hdr_dom, with other headers as >>>> URI, url, Request (btw, where i can find a list of headers supported >>>> by the layer 7 ACL ?). >>>> >>>> so, nothing worked, if someone could help me, and point me to the >>>> right direction, i would be really grateful :D >>> >>> You're missing "option http-server-close" in your config, so after >>> the first request is done, haproxy switches to tunnel mode and maintains >>> the client-server connection without inspecting anything in it. >>> >>> Regards, >>> Willy >>> >>