django websocket 聊天功能 用nginx代理 访问失败

django 项目
用dwebsocket 实现简单的聊天功能
本地调试已经成功
发布到服务器用nginx做代理, 链接失败

firefox 报错信息:

Firefox 无法建立到 ws://xxxxxx/ 服务器的连接。

chrome 报错信息:

WebSocket connection to 'ws://xxxxxxx/' failed: Error during WebSocket handshake: Unexpected response code: 400

nginx 配置如下:

server  {
  server_name xxxxxxxxxxxxx;
  listen 80;
  location /static {
    root /var/fixpdq;
  }
  location /media {
    root /var/fixpdq;
  }
  location / {
    proxy_pass http://127.0.0.1:8100;
    proxy_set_header Host $host;
    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 X-Real-IP $remote_addr;
    proxy_set_header Connection "upgrade";
  }
}

django view 代码如下(多余代码省略了)

@require_websocket
def chat(request):
    if request.is_websocket():
        print('握手成功')

                ....

本地调试用127.0.0.1 访问是没问题的, 但在本机用局域网ip访问, 就不通, 发布到服务器, 用nginx做代理, 也是不通, 确定的是前端请求已经到达后台代码了.
我想可能是nginx配置的问题
或者是请求到达服务器nginx之前已然就不是socket请求了(因为本机用局域网ip访问也不通),
但是试过很多方法了,
在view 里request.is_websocket() 这句代码是false, nginx转发后居然不是socket请求了, 那肯定就是nginx的配置问题了, 不应该是django 的问题,

求大神帮帮忙!!!

nginx配置的问题。你把nginx配置文件中proxy_pass http://127.0.0.1:8100; 这一行改为uwsgi_pass 127.0.0.1:8100;
这样nginx在向后转发的时候,会使用wsgi协议,而不是http,然后该请求才可以被uwsgi进程识别并处理。