websocket 失败 'Invalid frame header'

websocket failed with 'Invalid frame header'

我创建了一个简单的聊天应用程序并将其部署到 AWS EC2。

我用 Vue.js 构建了前端并使用了 javascript 的 WebSocket。

在后端,我使用了 Django、channels 和 Postgres。

它在本地工作正常,但 WebSocket 在服务器上一段时间后断开连接。

我使用 Nginx 进行部署。

我还为 Nginx WebSocket 配置将 proxy_read_timeout 设置为 600s。

        this.chatSocket = new WebSocket(GlobalConstants.WEBSOCKET_URL + '/ws/chat/' + id + '/')
        this.chatSocket.onmessage = (m) => {
            let data = JSON.parse(m.data)
            let messageData = {}
            messageData[data.type] = data.message
            let message = {
                author: data.sender == this.currentUser ? 'me' : data.sender,
                type: data.type,
                data: messageData
            }
            this.receiveMessage(message)
            if (data.sender != this.currentUser) {
                this.addParticipant(data.sender)
            }
        }

这是nginx配置。

server {
    listen 80;
    server_name x.x.x.x;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         "http://127.0.0.1:8000";
    }

    location /ws/ {
        proxy_pass http://127.0.0.1:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "Upgrade";
        proxy_set_header Host $host;
        proxy_read_timeout 600s;
    }
}

连接建立后,工作10或20秒。

然后出现这个错误。

请帮助我。

这是一个 nginx 配置问题。 我用的是 nginx 1.18.0,proxy_read_timeout 没用。