AWS ELB与WebSocket报错

需求:nginx默认禁止掉websocket调用,但统功能用到了websocket。

nginx 添加以下几行配置:

    location / {
        proxy_pass http://127.0.0.1:7000;
        ##开启websocket调用
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection  "upgrade";
    }

报错信息:


报错信息.png

AWS ELB 原配置如图:


AWS ELB与WebSocket报错_第1张图片
AWS ELB 原配置.png

问题分析:
在 AWS ELB中,使用的是http和https协议,但 AWS ELB却不支持WebSocket协议(仅支持HTTP, HTTPs, TCP and SSL.)并且没有任何消息表示ELB支持的HTTP和HTTPS协议可以支持WebSocket。当浏览器端向服务端发送消息时,由于ELB拦截掉了请求,且判断协议不是支持的几种,就残忍的抛弃掉了。

解决方案:
AWS WebSocket 基于HTTP协议,而HTTP协议又是基于TCP协议,ELB支持TCP协议,那么可以将ELB配置中HTTP协议改为TCP协议,https改为SSL,如图:


AWS ELB与WebSocket报错_第2张图片
修改后.png

你可能感兴趣的:(AWS ELB与WebSocket报错)