网站改成https后,websocket连接不上了。
如果网站使用HTTPS,WebSocket必须要使用wss协议。
使用wss协议的连接请求必须只能写域名,而非IP+端口。
我们可以通过nginx反向代理来实现,只需在nginx配置文件的server内加一个location即可(我这里websocket用的是2348端口,这里的端口改成你自己的端口)
location /socket/ {
proxy_pass http://127.0.0.1:2348;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
proxy_pass http://127.0.0.1:2348;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Real-IP $remote_addr;
}
前端这样写
const ws = new WebSocket("wss://www.zhiboblog.com/socket/");
这样就可以解决网站改成https后,websocket连接不上的问题了。
2020年10月24日 下午8:21 沙发
大佬你好,我的报错情况是这个:
net::ERR_SSL_PROTOCOL_ERROR
nginx配置和你上面写的格式一样,可是还是报错,连接不上。
但是在http上却能连接上。
2020年10月30日 下午6:36 1层
@萌新 ssl证书配置是正常的吗,网站能通过https访问吗