Nginx websocket 超时

Nginx websocket 超时

我正在通过 Nginx(作为反向代理)将带有 websocket 的客户端连接到 asp.net core 应用程序。服务器和客户端之间有心跳命令来保持 websocket 连接打开。

我的问题是,当客户端通过拔掉网线断开连接时,连接仍保持打开状态。我想设置一个超时时间,当客户端在一定时间内没有发送任何内容时,连接就会关闭。

我尝试了多次超时,但没有任何效果。(proxy_send_timeout,,,... )我设法设置的唯一超时是。我不喜欢的是,每次服务器发送任何内容(而不是客户端)时,都会重置此超时。client_body_timeoutkeepalive_timeoutsend_timeoutproxy_read_timeout

如果客户端在 x 秒内没有发送任何内容,我必须设置哪个超时时间才能断开客户端的连接?

提前致谢!

答案1

我认为你还应该检查系统 TCP 超时,

对于基于 Linux 的。

/proc/sys/net/ipv4/tcp_keepalive_time
/proc/sys/net/ipv4/tcp_keepalive_intvl
/proc/sys/net/ipv4/tcp_keepalive_probes
/proc/sys/net/ipv4/tcp_retries2

对于基于 Windows 的,

HKEY_LOCAL_MACHINE \SYSTEM \CurrentControlSet \Services: \Tcpip \Parameters

TcpInitialRTT: Defines what the initial time-out settings are for new connections. This number in seconds is doubled each time it retransmits before timing a connection out. Defaults to 3.

TcpMaxConnectRetransmissions: Defines the number of retransmissions before timing a connection out. Defaults to 5.

相关内容