【发布时间】:2018-05-07 20:49:22
【问题描述】:
我有一个在 nginx 服务器上运行的带有 socket.io 的 node.js 应用程序。问题是 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
【问题讨论】:
-
你有没有让 websockets 工作?它是根本不工作还是在 30 秒后工作并停止?
-
websocket 工作正常,在 30 秒过去之前没有问题。客户端建立连接 30 秒后,nginx 强制关闭该客户端的 websocket 连接,但服务器保持开启并接受进一步的连接(并且在 30 秒后超时)
-
看起来与超时配置类似的问题:stackoverflow.com/questions/10550558/…
-
我实际上已经尝试过该帖子中所说的内容,但是由于这是一篇旧帖子,而且我现在使用的是最新版本的 nginx,因此“stream”甚至不支持 proxy_read_timeout 指令s了