无法使用django-channels,docker上的nginx作为服务连接到websocket
|
我正在使用docker compose来构建一个django,nginx作为服务的项目.当我启动daphne服务器,并且客户端尝试连接到websocket服务器时,我收到此错误:
客户端显示了这一点
这是我的docker-compose.yml
Nginx的:
而circusd的web.ini文件:
最佳答案
非常明确地说stated in the fine manual,要成功运行Channels,您需要有一个专用的应用服务器来实现ASGI协议,例如提供的daphne
使用Channels更改了整个Django执行模型,因此有单独的“接口服务器”负责接收和发送消息,例如,WebSockets或HTTP或SMS,以及运行实际代码的“工作服务器”(可能在不同的服务器或VM或容器上或…).这两者通过“通道层”连接,该通道层来回传送消息和回复. 当前实现提供3个通道层,用于在接口服务器和工作服务器之间通信ASGI: >内存中的通道层,主要用于运行测试服务器(它是单个进程) 你像配置DATABASES一样配置它们::
当然这意味着您的docker配置必须更改并添加一个或多个接口服务器,而不是nginx(或者除此之外)(即使在这种情况下,您需要在不同的端口上接受所有的端口上的websocket连接)连接可能的问题)并且很可能是redis的一个实例连接它们. 这反过来意味着在circus和nginx支持ASGI之前,不可能将它们与django-channels一起使用,或者这种支持只适用于系统的常规http部分. 您可以在Deploying section of the official documentation中找到更多信息. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- python-uswgi-无法从multiprocessing.semaphore_tracker加载
- PHP-CodeIgniter不会在/上加载默认控制器
- http – Nginx proxy_cache_key $request_body被大型请求体
- nginx – 我可以将HTTPS流量从一个端口传递到另一个端口吗?
- linux – Nginx使用writev()和sendfile()
- 从django gunicorn nginx安装程序向外部URL发送POST请求
- nginx – proxy_cache_和fastcgi_cache有什么区别?
- apache-2.2 – 使用Nginx进行严格的安全性和虚拟主机隔离?
- php-Magento从旧Urls重定向到具有商店(语言)代码的新Urls
- nginx – 无效的子域被重定向到另一个域
- ruby-on-rails – 是否有必要将Unicorn放在Nginx
- ruby-on-rails – nginx错误:(13:权限被拒绝)连
- 使用PHP5-FPM的Nginx-提供空白屏幕的.php文件
- 如何让nginx只响应一个域?
- Node.js发送带有数据的发布请求?
- nginx反向代理:如何将“accept-encoding”头传递
- php-主要CodeIgniter应用子目录中CodeIgniter应用
- linux – nginx不会将标头中的ip转发到apache(启
- 是否可以在不使用硬件负载平衡器的情况下平衡多个
- ruby-on-rails – 即使在client_max_body_size 1
