我正尝试在端口80上运行and服务器和websocket服务器。为此,我使用HAProxy通过以下配置来路由连接:
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我正在使用Google Chrome进行测试。在一些机器上我连接得很好,在另一些机器上它会给我一个502错误,em-websocket记录了这个错误:
#<EventMachine::WebSocket::HandshakeError: Connection and Upgrade headers required>如果我停止运行代理,并在端口80上运行web套接字服务器,它可以正常工作,这对我来说表明问题出在代理上。我在某处读到,在处理websockets时,HAProxy不应该运行在http模式下,因为升级包不是有效的HTTP,这是否与我看到的问题有关?
发布于 2012-07-02 08:36:17
我现在使用端口443。将来,我将在单独的服务器上运行web套接字,以解决此问题。
发布于 2012-06-12 21:21:22
是,请尝试更改为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如果您有多个服务器来保持与同一服务器的套接字连接,则源平衡非常重要。
https://stackoverflow.com/questions/10974753
复制相似问题