【问题标题】:Django websocket works on local but not in Amazon EC2 server, error during Websocket handshakeDjango websocket 在本地工作,但不在 Amazon EC2 服务器上,Websocket 握手期间出错
【发布时间】:2018-12-19 23:43:25
【问题描述】:

我有一个带有 angular 和 django 的 websockets 项目,它在 Linux 本地运行良好,当我将它部署到也是 Linux 的 Amazon EC2 并在本地对 Linux 做了同样的事情时,我附上了服务器的屏幕截图Amazon EC2 中的 django 看起来运行正常,server screenshot,客户端是一个 Angular 应用程序,当我尝试连接到服务器 this.globals.socket = new WebSocket('ws:/ /mydomain.com.com/stocks'),我收到此错误 WebSocket connection to 'ws://mydomain.com.com/stocks' failed: Error during WebSocket handshake: Unexpected response code :404。我是否必须在 Amazon EC2 服务器的 nginx.conf 中配置某些内容?还是必须在服务器中启用其他内容?任何帮助或线索将不胜感激。非常感谢。

【问题讨论】:

    标签: python django angular amazon-ec2


    【解决方案1】:

    您在 localhost (127.0.0.1:8000) 上运行您的服务器。它无法从外部访问。您必须在公共 IP 上运行它或配置代理以将请求路由到您的本地主机服务器。另外不要忘记通过 EC2 管理接口向世界开放端口。

    另外请注意,您不应在生产环境中通过./manage.py runserver 运行您的服务器。您应该使用应用程序 WSGI 服务器(例如 Gunicorn)和 Web 服务器(例如 Nginx)。查看this good tutorial。基本上,您运行绑定到 unix 套接字的 Gunicorn,以及代理 (proxy_pass) 对 unix 套接字的所有请求的 Nginx。

    【讨论】:

      猜你喜欢
      • 2017-10-12
      • 1970-01-01
      • 2017-04-20
      • 1970-01-01
      • 1970-01-01
      • 2019-07-01
      • 1970-01-01
      • 2021-03-25
      • 2015-06-07
      相关资源
      最近更新 更多