网站改成https后,websocket连接不上

网站改成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;
}

前端这样写

const ws = new WebSocket("wss://www.zhiboblog.com/socket/");

这样就可以解决网站改成https后,websocket连接不上的问题了。

  • 2
  • 3,418 views
    A+
发布日期:2020年04月20日  所属分类:php

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:2   其中:访客  1   博主  1

  1. 萌新 0

    大佬你好,我的报错情况是这个:
    net::ERR_SSL_PROTOCOL_ERROR
    nginx配置和你上面写的格式一样,可是还是报错,连接不上。
    但是在http上却能连接上。

    • 志博

      @萌新 ssl证书配置是正常的吗,网站能通过https访问吗