2012-06-11 2 views
1

나는이 설정 사용하여 연결 경로에 내가 HAProxy를 사용하고이 작업을 수행하려면 포트 80에서 웹 서버와 웹 소켓 서버를 실행하기 위해 노력하고있어 :WebSocket을, EM-웹 소켓 및 HAProxy 502 오류

global 
    maxconn  4096 # Total Max Connections. This is dependent on ulimit 
    nbproc  1 
    ulimit-n  65536 

defaults 
    mode  http 

frontend all 0.0.0.0:80 
    timeout client 86400000 
    acl is_websocket hdr_beg(host) -i live 
    acl is_websocket hdr(Upgrade) -i WebSocket 

    default_backend www_backend 

    use_backend production_socket_backend if is_websocket 

backend www_backend 

    balance roundrobin 
    option forwardfor # This sets X-Forwarded-For 
    timeout server 30000 
    timeout connect 4000 
    server appserver 127.0.0.1:81 weight 1 maxconn 1024 

backend production_socket_backend 
    balance roundrobin 
    option forwardfor # This sets X-Forwarded-For 
    timeout queue 5000 
    timeout server 86400000 
    timeout connect 86400000 
    server appserver 127.0.0.1:8083 weight 1 maxconn 1024 

을 Chrome을 사용하여 테스트하고 있습니다. 나는 다른 사람에 잘 연결 일부 컴퓨터는 502 오류 및 EM-웹 소켓 로그를 나에게이 오류 줄 것이다 : 나는 프록시를 실행 중지하면

#<EventMachine::WebSocket::HandshakeError: Connection and Upgrade headers required> 

을하고 잘 작동 포트 80에서 웹 소켓 서버를 실행하는 내게는 문제가 프록시와 관련되어 있음을 나타냅니다. 나는 어딘가에 HAProxy가 업그레이드 모드에서 HTTPS 모드로 실행되어서는 안되며, 업그레이드 패킷이 유효한 HTTP가 아닐 때 웹 소켓을 처리 할 때 읽지 않아야한다. 문제는 내가 겪고있는 문제와 관련이 있을까?

답변

1

저는 현재 443 포트를 사용하고 있습니다. 앞으로이 문제를 해결하기 위해 별도의 서버에서 웹 소켓을 실행하게 될 것입니다.

0

예, tcp 모드로 변경해보십시오.

헤더 체크가있는 항목을 전달하는 것이 확실하지 않습니다. 전용 포트에 소켓이 있습니다.

listen websockets 
    mode tcp 
    bind *:8000 
    balance source 
    timeout queue 5000 
    timeout server 86400000 
    timeout connect 86400000 
    server thin_web1 x.x.x.x:8000 

동일한 서버에 소켓 연결을 유지하는 서버가 여러 대있는 경우 소스 균형이 중요합니다.

+0

감사합니다. @ v1rtual. 나는 균형의 근원을 알지 못했다. 불행히도 나는 웹 소켓이 엄격한 방화벽에 의해 차단되지 않기를 바라며 포트 80에서 웹 서버와 웹 소켓 서버를 모두 실행하려고합니다. – Mike

+0

좋습니다. em-websocket이 작동하려면 포트 80 프론트 엔드를 tcp 모드로 변경해야합니다. 귀하의 hdr 수표는 더 이상 작동하지 않습니다. socket.io가 http 모드에서 작동하는 것 같습니다. http://stackoverflow.com/questions/4360221/haproxy-websocket-disconnection – v1rtual