我的配置文件:
global
maxconn 4096 # Total Max Connections. This is dependent on ulimit
nbproc 2
daemon
log 127.0.0.1 local1 notice
defaults
mode http
frontend all 0.0.0.0:80
timeout client 86400000
default_backend www_backend
acl is_websocket hdr(Upgrade) -i WebSocket
acl is_websocket hdr_beg(Host) -i ws
acl is_websocket path_beg /socket.io
use_backend socket_backend if is_websocket
backend www_backend
balance roundrobin
option forwardfor # This sets X-Forwarded-For
timeout server 30000
timeout connect 4000
server server1 localhost:9001 weight 1 maxconn 1024 check
server server2 localhost:9002 weight 1 maxconn 1024 check
backend socket_backend
balance roundrobin
option forwardfor # This sets X-Forwarded-For
stats enable
timeout queue 5000
timeout server 86400000
timeout connect 86400000
server server1 localhost:5000 weight 1 maxconn 1024 check
据我所知,www_backend匹配所有内容。当我的网络应用程序请求http://myapp.com/socket.io/1/?t=1335831853491时,它返回404,标题显示来自Express的响应。奇怪的是,当我卷曲时 - 我http://myapp.com/socket.io/1/?t=1335831853491它会返回:
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: keep-alive
当我运行sudo netstat -lptu时,我可以确认我的socket.io进程正在端口5000上运行。有什么想法吗?
答案 0 :(得分:1)
在此处找到答案:
“ust add”选项http-server-close“到你的默认部分,它应该可以工作。”
答案 1 :(得分:1)
同意上述回应。顺便说一句,你不应该使用1天的超时来建立TCP连接(超时连接),它完全没有意义,并且会在服务器出现故障时导致连接累积。连接(特别是本地连接)是 应该立即建立。我倾向于为连接设置5秒超时,即使在慢速网络上也是如此。
关于其他很长的超时,我打算实施一个“超时隧道”,以便用户不必使用那么大的超时来进行正常流量。