NGINX配置WEBSOCKET反向代理的超时问题

最近做了一个聊天系统,选用了WebSocket协议。

服务启动后,客户端直接连接。同时跟客户端约定了每分钟发一个心跳包过来。这样测试了一段时间,没有问题。

正式上线时当然不能这样搞,所以打算加一层反向代理。

Nginx目前是支持对WebSocket的反向代理的,不需要使用第三方的东西。配置的方式很简单,到处都可以搜到教程,这里不细说。

配置好之后,我这边测试时遇到了一个问题。客户端第二次发心跳包时,就直接断开了。

最终确认问题在于Nginx有个超时的设置,就是proxy_read_timeout,默认是60秒。

所以我们约定的一分钟心跳正好踩到这个时间上了。

在location中增加proxy_read_timeout,解决问题。