Node.js nginx websocket连接在30秒后超时

Node.js nginx websocket连接在30秒后超时,node.js,nginx,websocket,Node.js,Nginx,Websocket,我有一个node.js应用程序,其中socket.io在nginx服务器上运行。问题是websocket连接在连接30秒后被nginx超时,即使连接不是一直处于空闲状态。这是我的nginx.conf文件 user nginx; worker_processes auto; error_log /var/log/nginx/error.log; pid /run/nginx.pid; include /usr/share/nginx/modules/*.conf; events { w

我有一个node.js应用程序,其中socket.io在nginx服务器上运行。问题是websocket连接在连接30秒后被nginx超时,即使连接不是一直处于空闲状态。这是我的nginx.conf文件

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections 1024;
}


stream {
    upstream cluster {
        least_conn;
        server xx.xxx.xxx.xx:2157;
    }

    server {
        listen 7000;
        preread_timeout 86400s;
        proxy_timeout 86400s;
        proxy_pass cluster;
    }
}

nginx版本是:1.12.2

PS:实际上是node.js应用程序本身关闭了客户端的连接


我添加了这行代码
io.set('heartbeat timeout',24*60*60)
到我的node.js应用程序,超时不再是问题。

你有没有让WebSocket工作过?它是完全不工作还是在30秒后工作并停止?WebSocket工作得很好,30秒后才有问题。客户端建立连接30秒后,nginx会强制关闭该客户端的websocket连接,但服务器仍保持打开状态并接受进一步的连接(30秒后也会超时),超时配置似乎也存在类似问题:我实际上已经尝试过那篇文章中所说的内容,但由于这是一篇旧文章,我现在正在使用最新版本的nginx,proxy\u read\u timeout指令在“stream”上甚至不再受支持