socket.io,netty socketio,nginx每分钟断开连接

socket.io, netty-socketio, nginx disconnecting every minute

本文关键字:每分钟 断开 nginx 连接 socketio io netty socket      更新时间:2024-01-22

我有一个netty-socketio服务器在端口9092上运行。nginx被配置为侦听端口9093和对netty-socketio服务器的代理请求(两者当前都在同一台服务器上运行,但在生产中会分开一次)。

如果我直接连接到套接字服务器,一切都会正常工作,但当通过nginx连接时,每一分钟就会断开并重新连接一次。

极其简化的客户端示例:

<!DOCTYPE html>
<html>
    <head>
        <script src="https://cdn.socket.io/socket.io-1.3.4.js"></script>
        <script>
            var socket = io.connect('http://1.1.1.1:9093');
            socket.on('connect', function ()
            {
                console.log('connected to socket server');
            });
            socket.on('disconnect', function ()
            {
                console.log('lost connection to socket server');
            });
        </script>
    </head>
</html>

nginx配置:

upstream socketserver {
    server 127.0.0.1:9092;
}
server {
    listen 9093;
    location / {
        proxy_pass http://socketserver;
        proxy_http_version 1.1;
        proxy_pass_header Server;
        proxy_pass_header Connection;
        proxy_pass_header Date;
    }
}

我能找到的唯一区别是,当直接连接时,Connection: Upgrade标头设置为大写"U",而当使用nginx时,标头设置为全小写("upgrade")。我甚至从源代码重新编译了nginx,但大写的"U"并没有什么不同。

如有任何帮助,我们将不胜感激。谢谢

尝试在上游部分添加一个keepalive

...
keepalive 60;

在尝试使用默认值为60s的指令后,我发现罪魁祸首是proxy_read_timeout。在server上下文中添加此内容为我解决了问题:

proxy_read_timeout 86400s;

此处提供有关此指令的文档。