Не удалось установить соединение Web Socket

На моем сайте я использую Django, WebSocket работает нормально на localhost, но когда я отправляю его на VPS (виртуальный частный сервер), я получаю ошибку WebSocket connection to wss://domain_name/ws/admin/pending/products/ failed.

вот мой asgi.py:

import os

import django
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from django.core.asgi import get_asgi_application

import api.routing

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Naviguih_backend.settings")
django.setup()

application = ProtocolTypeRouter(
    {
        "http": get_asgi_application(),
        "websocket": AuthMiddlewareStack(URLRouter(api.routing.websocket_urlpatterns)),
    }
)

и мой routing.py:

from django.urls import path

from .consumers import AdminNotificationConsumer, NotificationConsumer

websocket_urlpatterns = [
    path("ws/notifications/", NotificationConsumer.as_asgi()),
    path("ws/admin/pending/products/", AdminNotificationConsumer.as_asgi()),
]

Я прочитал несколько решений, в которых говорится, что вам нужно настроить Nginx на переадресацию портов, и вот моя конфигурация:

server {
    server_name domain_name;
    client_max_body_size 25M;

    location / {
        proxy_pass http://127.0.0.1:8000;
        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-Proto $scheme;
    }

    location /ws/ {
        proxy_pass http://127.0.0.1:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        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-Proto $scheme;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/domain_name/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/domain_name/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

server {
    if ($host = domain_name) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    listen 80;
    server_name domain_name;
    return 404; # managed by Certbot
}

и затем я пробую его и получаю ту же проблему.

Вернуться на верх