我有一个运行socket.io的Node.js服务器。我想从另一个Node.js服务器提供的网页连接到此服务器。对于两台服务器,我使用启用了SSL的AWS经典负载均衡器。我的证书是亚马逊发行的证书。
我设法使用轮询传输使其正常工作,但出于性能原因,我想使用websockets。但是,据我所知,Elastic Beanstalk的默认NginX配置不支持连接升级。
基于某些guides,我尝试了以下内容:
我已将此添加到.ebextensions/01_websockets_nginx.config
:
files:
"/etc/nginx/conf.d/websocketupgrade.conf" :
mode: "000755"
owner: root
group: root
content: |
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
我的负载均衡器配置如下:
Load Balancer Protocol Load Balancer Port Instance Protocol Instance Port
HTTP 80 HTTP 80
HTTPS 443 HTTP 80
但是当我访问我的客户端网页时,我在浏览器控制台中收到此消息:
Firefox无法在wss://.../socket.io/上建立与服务器的连接?EIO = 3& transport = websocket& sid = zNi1IqNWHYo3WwjgAAAB。
我尝试了各种不同的配置但没有成功。让它工作的秘诀是什么?