🚁 Proxy Websocket Timeout
之前在这篇文章里提到用Nginx和Apache代理websocket的连接,一个项目在测试机上有人反映如果一分钟没有在ws上输入信息,连接就会断掉。
打log之后在client端显示是ws.onclose的事件被触发了,触发的event的code是1006,reason是””,搜了一圈发现是Nginx的配置问题。Nginx在proxy ws的时候,默认的read timeout是60秒,如果在60秒内ws上没有数据传输,Nginx就会把它断掉。
解决方法是在proxy的配置上添加timeout的设置:
1 | location /ws/ { |
在另外Apache的机器上经测试没有这个1分钟超时的问题,因为Apache默认的IdleTimeout是0,也就是永不超时,所以跑Apache代理ws的机器没有这个问题。