我正在使用Django和Channels 2.1.1开发一个项目。一切在我的家用PC上都运转良好,但是当我部署到AWS时,出现错误:'与'ws:// IP / ws / lobby /'的WebSocket连接失败:WebSocket握手期间出错:意外的响应代码:500'从HTML中我建立聊天套接字的行开始:
var chatSocket = new WebSocket(
'ws://' + window.location.host + '/ws/' + roomName + '/'
);
我正在使用nginx,daphne和gunicorn在主机上运行Django应用程序。 Nginx设置为将websocket请求路由到达芙妮处理的端口9000,gunicorn处理端口8000上的wsgi。 当我转到Channels 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;
}