Я успешно развернул uwsgi + nginx + Django.Но я хочу общаться с моим сервером, используя websocket.
Я следовал этому руководству для обработки обычных запросов https.https://uwsgi -docs.readthedocs.io / en / latest / tutorials / Django_and_nginx.html
Настройки файла конфигурации nginx выглядят следующим образом:
upstream django {
server unix:///path/to/your/mysite/mysite.sock; # for a file socket
}
# configuration of the server
server {
# the port your site will be served on
listen 443 ssl; # managed by Certbot
# the domain name it will serve for
server_name example.com; # substitute your machine's IP address or FQDN
charset utf-8;
location /static {
alias /path/to/your/mysite/static; # your Django project's static files - amend as required
}
# Finally, send all non-media requests to the Django server.
location / {
uwsgi_pass django;
include /path/to/your/mysite/uwsgi_params; # the uwsgi_params file you installed
}
}
IГуглил много и обнаружил, что люди рекомендовали добавить эти настройки:
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
Не работает.Я не использовал proxy_pass
, потому что я уже использую uwsgi_pass django;
, и мой клиент пытается подключиться через веб-сокет к тому же URL-адресу (местоположение), которое я uwsgi_pass к django.Я просмотрел документацию uwsgi и нашел эту страницу: https://uwsgi -docs.readthedocs.io / en / latest / WebSockets.html
По этой странице мне не нужны дополнительные настройкиесли я просто добавлю опцию --http-websockets.Так я и сделал.Например:
/usr/local/bin/uwsgi --emperor /etc/uwsgi/vassals --http-websockets www-data --daemonize /var/log/uwsgi-emperor.log
Добавляется в /etc/rc.local.Эта команда тоже не работает.Я также попытался добавить http-websockets = true
в файл .ini.Это даже заставило uwsgi остановиться.Поэтому я удалил эту опцию.
Что здесь не так?
Я получаю 400 Bad Request за каждый запрос веб-сокета.Единственные данные, которые я вижу, это (код операции -1).Сообщение об ошибке в graphql отсутствует.