handshake: Unexpected response code: 400 django Nginx WebSocket 部署在Windows server2012 r2上
Nginx服务器的解决方法如下:
前端代码: 将红框中的本地ip:端口改成服务器的ip:端口 会报 websocket handshake: Unexpected response code: 400错误但是现将IP和端口改为服务器的
Django 代码
这里需要安装 dwebsocket 并在setting中配置 并且在setting最下边写上WEBSOCKET_ACCEPT_ALL=True
设置 DEBUG = False # True ALLOWED_HOSTS = ["*", ]
在view中设置如下
运行Django 会报如下的错误:
解决方法就是在Nginx的conf 中找到 nginx.conf这个文件夹,看了很多的博客他们都说是这样配置
location / {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
但是我发现这样配置不能解决问题,依然会报同样的错误,翻了好多的博客都是这样写的崩溃边缘无意间发下一个博客让这个问题终于解决了,解决方法如下:
原来的location不需要动只需要在原来的location/{......} 后边加上这样一段即可
location /{
这是之前你自己的location中的配置,这里边不需要动,在这个下边添加下边的代码即可解决握手失败的错误
}
location ^~/websocket {
proxy_pass http://127.0.0.1:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
先运行python manage.py runserver 服务器ip:端口
再运行Nginx.exe