나는이 설정 사용하여 연결 경로에 내가 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가 아닐 때 웹 소켓을 처리 할 때 읽지 않아야한다. 문제는 내가 겪고있는 문제와 관련이 있을까?
감사합니다. @ v1rtual. 나는 균형의 근원을 알지 못했다. 불행히도 나는 웹 소켓이 엄격한 방화벽에 의해 차단되지 않기를 바라며 포트 80에서 웹 서버와 웹 소켓 서버를 모두 실행하려고합니다. – Mike
좋습니다. em-websocket이 작동하려면 포트 80 프론트 엔드를 tcp 모드로 변경해야합니다. 귀하의 hdr 수표는 더 이상 작동하지 않습니다. socket.io가 http 모드에서 작동하는 것 같습니다. http://stackoverflow.com/questions/4360221/haproxy-websocket-disconnection – v1rtual