use*_*089 7 django websocket redis amazon-elastic-beanstalk django-channels
我正在尝试使用django渠道的聊天应用程序来使用负载均衡器在AWS Elastic Beanstalk上运行.
我基本上修改了https://github.com/jacobian/channels-example中的代码以使用Elastic Beanstalk.我可以使用该命令在本地成功运行它
python manage.py runserver
Run Code Online (Sandbox Code Playgroud)
问题是当我使用Elastic Beanstalk部署它时,我在启动聊天应用程序时收到以下错误
WebSocket connection to 'wss://mydomain.com/test/' failed: Error
during WebSocket handshake: Unexpected response code: 200
Run Code Online (Sandbox Code Playgroud)
我尝试了在/sf/answers/2088220641/上提出的解决方案,但它只显示了不同的错误代码
WebSocket connection to 'wss://mydomain.com/test/websocket' failed:
Error during WebSocket handshake: Unexpected response code: 404
Run Code Online (Sandbox Code Playgroud)
我还已将负载均衡器侦听器端口更改为TCP 80并获得SSL证书以将安全侦听器端口更改为SSL 443,但仍会收到相同的错误.
我还在AWS Elastic Beanstalk上阅读了带有socket.io的Websockets,但是没有为Django配置代理服务器的选项,我认为它默认使用Apache.
我对Elastic Beanstalk的配置缺少什么使它工作?
有没有办法改变这个,所以我们可以用asgi运行daphne服务器?
我没有使用 Elastic Beanstalk,但这是我的 VPS 配置。Ubuntu 14.04,带有 nginx 和supervisor。Supervisor 的工作是确保服务器和工作进程始终运行。Nginx 监听本地主机上的 8000 端口并将其转发到 8080 和 443。
# nginx.conf
server {
listen 8080 default_server;
server_name example.com;
return 301 https://example.com$request_uri;
}
server {
listen 443 default_server ssl;
server_name example.com;
# ... SSL stuff
# Send root to the ASGI server
location / {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
}
# Static Files
location /static/ {
root /home/ubuntu/project;
}
# Media Files
location /media/ {
root /home/ubuntu/project;
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的主管配置。我只需重新启动主管即可启动服务器sudo service supervisor restart
# supervisord.conf
[program:project_server]
directory=/home/ubuntu/project/
command=/home/ubuntu/project/venv/bin/daphne project.asgi:channel_layer --port 8000 --bind 0.0.0.0
[program:project_worker]
process_name=project_worker%(process_num)s
numprocs=3
directory=/home/ubuntu/project/
command=/home/ubuntu/project/venv/bin/python /home/ubuntu/project/manage.py runworker
[group:project]
programs=project_server,project_worker
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
711 次 |
| 最近记录: |