nginx Daphne WebSocket在某个时间后停止响应

x6h2sr28  于 2023-10-17  发布在  Nginx
关注(0)|答案(1)|浏览(161)

项目规格:Django 3.2.4,Channels 3.0.5,Redis 3.4.1,Daphne 3.0.2 .
我建立了一个聊天系统,它使用WebSocket进行通信。在页面加载时,一切正常,但仅在几秒钟后(~20-30秒),数据发送和接收停止。在刷新页面上,它再次开始工作。我不知道,这个问题araise从消费者文件或达芙妮从我的服务器。下面是我的--access-log达芙妮
enter image description here
我试着调试consumers.py,什么也没找到,但不知道如何调试daphne或服务器端的问题。请指导我一些检查表跟踪问题。我希望连接保持活跃至少30分钟。
为了在nginx上设置daphne,我遵循了this教程。
我的Nginx conf如下:Nginx Image

xj3cbfub

xj3cbfub1#

当连接在大约30秒后下降时,可能是因为Nginx正在杀死它。我自己也遇到过几次这样的问题。解决办法很简单。
请在nginx配置中将proxy_read_timeout设置为一个非常大的数字。例如24小时。
你的配置看起来像这样:

upstream channels-backend {server localhost:8000;}

server {
    listen 80;
    server_name server_domain_or_IP;
    location = /favicon.ico { access_log off; log_not_found off; }
    location /static/ {
        root /home/sammy/myprojectdir/django_project_dir;
    }
    location /media/ {
        root /home/sammy/myprojectdir/django_project_dir;
    }
    location / {
        proxy_pass http://channels-backend;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_read_timeout 86400s;
    }
}

请考虑阅读以下内容:

相关问题