'Websocket not working with django on deployment

i hope that u can help me. I deployed my django application to an ubuntu 20.04 server with nginx and gunicorn. This is my settings:

gunicorn.service

[Unit] 
Description=gunicorn daemon 
Requires=gunicorn.socket 
After=network.target 

[Service] 
User=ubuntu 
Group=www-data 
WorkingDirectory=/var/www/PlugSell
ExecStart=/var/www/PlugSell/env/bin/gunicorn --access-logfile - --error-logfile - -k uvicorn.workers.UvicornWorker --workers 3 --bind unix:/run/gunicorn.sock  minible.asgi:application 

[Install]
WantedBy=multi-user.target

app nginx conf

server { 
    
    server_name 3.73.206.145 127.0.0.1 sell.plug-shop.com; 
    
    location = /favicon.ico { 
        access_log off; log_not_found off; 
    } 
    
    location /static/ { 
        root /var/www/PlugSell;
    }
    
    location / { 
        include proxy_params; 
        proxy_pass http://unix:/run/gunicorn.sock;
    }
    
    location /ws/ {
        proxy_set_header Host               $http_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;
        proxy_set_header X-Forwarded-Proto  $scheme;
        proxy_set_header X-Url-Scheme       $scheme;
        proxy_redirect off;

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

        proxy_pass http://unix:/run/gunicorn.sock;
    }

    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/sell.plug-shop.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/sell.plug-shop.com/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 = sell.plug-shop.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot

 
    listen 80; 
    
    server_name 3.73.206.145 127.0.0.1 sell.plug-shop.com;
    return 404; # managed by Certbot


}

in settings.py i have

CHANNEL_LAYERS = {
    "default": {
        "BACKEND": "channels_redis.core.RedisChannelLayer",
        "CONFIG": {
            "hosts": [("127.0.0.1", 6379)],
        },
    },
}

and in my asgi.py

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'minible.settings')
django.setup()

application = ProtocolTypeRouter({
    "http": get_asgi_application(),
    "websocket": AuthMiddlewareStack(
        URLRouter(
            [
                path('ws/notification/',
                  consumer.NotificationConsumer.as_asgi())
            ]
        )
    )
})

Redis is installed and work perfectly (binding at 0.0.0.0)

Everything works perfectly but the websocket doesn't work.

I try to connect to the websocket via "wss://sell.plug-shop.com/ws/notification/" but the connection always fails. In the nginx log file it does not give me any information regarding some connection error to the websocket



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source