Как завести сокеты на django на сервере nginx (gunicorn+uvicorn)?
Сам сайт работает, все загружается, кроме сокетов
WebSocket connection to 'ws://192.168.56.103:8080/ws' failed:
nginx:
upstream channels-backend {
server localhost:8080;
}
server {
listen 80;
server_name 192.168.56.103;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/yasf/testdjango5;
}
location /media/ {
root /home/yasf/testdjango5;
}
location /admin/static/ {
root /home/yasf/testdjango5;
}
location / {
include proxy_params;
proxy_pass http://unix:/run/gunicorn.sock;
}
location /ws/ {
proxy_pass http://unix:/run/gunicorn.sock:8080;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection “upgrade”;
proxy_redirect 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;
}
}
Все это лежит на VirtualBox, пытаюсь просто разобраться с django, и вот одна из вещей это сокеты. Также не мало важно то, что если запускать через python manage.py runserver 0.0.0.0:8000, через asgi естественно, то все прекрасно отрабатывает
script.js (то, где и применяются сокеты):
const socket = new WebSocket('ws://192.168.56.103:8000/ws');
socket.onopen = function (e) {
socket.send(JSON.stringify({
message: 'Hello from Js client'
}));
};
socket.onmessage = function (event) {
try {
console.log(event);
} catch (e) {
console.log('Error:', e.message);
}
};