Я работаю над проектом с использованием Django и каналов 2.1.1. Все отлично работает на моем домашнем ПК, но при развертывании в AWS я получаю ошибку: «Соединение WebSocket с« ws: // IP / ws /обби / »не удалось: Ошибка во время рукопожатия WebSocket: Неожиданный код ответа: 500 ', который происходит из строки в моем HTML, где я устанавливаю сокет чата:
var chatSocket = new WebSocket(
'ws://' + window.location.host + '/ws/' + roomName + '/'
);
Я использую nginx, daphne и gunicorn для запуска моего приложения Django на хост-компьютере. Nginx настроен на маршрутизацию запросов websocket к порту 9000, который обрабатывает Дафна, а gunicorn обрабатывает wsgi на порту 8000.
Когда я пошел в учебное пособие по каналам 2, в нем есть раздел для проверки связи между канальным слоем и Redis с использованием
Django Shell, который я тестировал и работает.
Мой полный код можно увидеть на https://github.com/Rob-Fox/Chat2
Спасибо
Оказывается, ошибка 500 была вызвана тем, что я забыл установить и настроить Redis. Все работает сейчас.
Конфигурация Nginx:
server {
listen 80;
server_name IP;
location = /favicon.ico { access_log off; log_not_found off; }
location /static/ {
root /home/ubuntu/Chat2;
}
location / {
include proxy_params;
proxy_pass http://unix:/home/ubuntu/Chat2/channelS.sock;
}
location /ws/ {
proxy_pass http://0.0.0.0:9000;
proxy_http_version 1.1;
proxy_read_timeout 86400;
proxy_redirect off;
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-Host $server_name;
}