Назад | Перейти на главную страницу

Начальная задержка связи NGINX Websocket

Я создал сервер Django, который использует django-каналы для связи через веб-сокеты. Когда я запускаю сервер с NGINX, возникает начальная задержка в связи через веб-сокет между сервером и клиентом. После начальной задержки все отсутствующие данные поступают в очень короткий промежуток времени, а затем они начинают обмениваться данными в режиме реального времени.

Я тестировал сервер автономно и только с экземпляром Daphne без прокси NGINX, и начальной задержки связи нет.

Ниже представлена ​​моя конфигурация NGINX. Если кто-нибудь знает, почему я получаю начальную 10-секундную задержку при обмене данными через веб-сокет, я был бы очень признателен.

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    map $http_upgrade $connection_upgrade {
      default upgrade;
      '' close;
    }
    include       mime.types;
    default_type  application/octet-stream;

    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
    #                  '$status $body_bytes_sent "$http_referer" '
    #                  '"$http_user_agent" "$http_x_forwarded_for"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  0;

    #gzip  on;
    # the upstream component nginx needs to connect to
  upstream django {
      server 127.0.0.1:8001;
  }
  server {
    listen 80;
    client_max_body_size 20M;
    server_name localhost;

    location / {
            proxy_pass http://django;

            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection $connection_upgrade;

            proxy_redirect     off;
            proxy_buffering    off;
            proxy_set_header   Host $host;
            proxy_set_header   X-Real-IP $remote_addr;
            proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header   X-Forwarded-Host $server_name;

        }

    }

}

Дополнительная информация: каждый раз перед отправкой сообщений требуется одно и то же количество сообщений, независимо от того, насколько быстро сообщения помещаются в очередь, что означает, что задержка сообщения не зависит от времени, а, похоже, зависит от переполнения буфера? Как в нем не будут отправляться данные, пока не будет заполнен какой-то буфер?