HAProxy + WebSocket断开连接

我正在使用HAProxy在子域上将请求发送到node.js应用程序。


我无法使WebSockets正常工作。到目前为止,我只能使客户端建立WebSocket连接,但是之后很快就会断开连接。


我在ubuntu上。我一直在使用的各种版本socket.io和node-websocket-server。客户端是Safari或Chrome的最新版本。HAProxy版本是1.4.8


这是我的HAProxy.cfg


global 

    maxconn 4096 

    pidfile /var/run/haproxy.pid 

    daemon 


defaults 

    mode http 


    maxconn 2000 


    option http-server-close

    option http-pretend-keepalive


    contimeout      5000

    clitimeout      50000

    srvtimeout      50000


frontend HTTP_PROXY

    bind *:80 


    timeout client  86400000


    #default server

    default_backend NGINX_SERVERS


    #node server

    acl host_node_sockettest hdr_beg(host) -i mysubdomain.mydomain


use_backend NODE_SOCKETTEST_SERVERS if host_node_sockettest



backend NGINX_SERVERS 

server THIS_NGINX_SERVER 127.0.0.1:8081


backend NODE_SOCKETTEST_SERVERS

timeout queue   5000

timeout server  86400000


server THIS_NODE_SERVER localhost:8180 maxconn 200 check

我已经拖网和邮件列表,但无法获得任何建议的解决方案。


(ps这可能是由于serverfault,但SO上还有其他HAProxy问题,所以我选择在此处发布)


富国沪深
浏览 1431回答 3
3回答

慕桂英3389331

升级到最新版本的socket.io(npm install socket.io@0.6.8已修补以与HAProxy一起使用的0.6.8->),并下载最新版本的HAProxy。这是一个示例配置文件:global    maxconn     4096 # Total Max Connections. This is dependent on ulimit    nbproc      2defaults    mode        httpfrontend all 0.0.0.0:80    timeout client 5000    default_backend www_backend    acl is_websocket hdr(Upgrade) -i WebSocket    acl is_websocket hdr_beg(Host) -i ws    use_backend socket_backend if is_websocketbackend www_backend    balance roundrobin    option forwardfor # This sets X-Forwarded-For    timeout server 5000    timeout connect 4000    server server1 localhost:8081 weight 1 maxconn 1024 check    server server2 localhost:8082 weight 1 maxconn 1024 check    server server3 localhost:8083 weight 1 maxconn 1024 checkbackend socket_backend    balance roundrobin    option forwardfor # This sets X-Forwarded-For    timeout queue 5000    timeout server 5000    timeout connect 5000    server server1 localhost:8081 weight 1 maxconn 1024 check    server server2 localhost:8082 weight 1 maxconn 1024 check    server server3 localhost:8083 weight 1 maxconn 1024 check
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Node.js