websocket断开现象
这个问题其实已经在我的setup中存在很久了,只是我从来没怎么在意,也几乎不会影响日常使用。
具体表现为,通过客户端连接v2ray的过程中一切正常,但如果有一个websocket连接60秒没有通信,就会被强制断开。
个人使用中,主要受到影响的是ssh客户端和Twitch,ssh客户端的现象是如果一分钟没有操作,session就会断开,但是比较容易解决,只需要在客户端设置一个keepalive即可。Twitch受到的影响比较大,chat如果没有新的消息,每分钟都会自动断开然后重连,一方面会有重连信息很麻烦,同时也可能丢消息。
解决方案
经过排错发现该问题的原因在于Nginx反代默认60秒切断没有通信的websocket连接,在http块或者location块内加上
proxy_read_timeout 3600;
proxy_send_timeout 3600;
即可防止Nginx切断websocket连接。
关于xrayr
在测试过程中,通过脚本直接安装的v2ray在修改Nginx配置之后就不再断开websocket连接,但通过xrayr运行的v2ray依旧断开,需要在xrayr配置中增加ConnIdle
选项的时间。
另外如果发现修改ConnIdle没有生效,可以参考这个issue,xrayr默认的配置文件有typo,ConnectionConfig少了一个c。
Comments NOTHING