https站websocket 使用wss 报错?

客户端请求为:

  let protocol = location.protocol === 'https:' 
        ? 'wss://www.domain.com:8180' 
        : 'ws://www.domain.com:8180'; 
  var ws = new WebSocket(protocol);
  本地测试无问题

nginx配置如下:

server {

listen 443 ssl http2;
listen [::]:443 ssl http2; 
server_name www.aizhaohui.com; # 你的域名
ssl on;
root /var/www/html; # 前台文件存放文件夹,可改成别的
index index.html index.htm index.nginx-debian.html; # 上面配置的文件夹里面的index.html
ssl_certificate  cert/1_www.aizhaohui.com_bundle.crt; # 改成你的证书的名字
ssl_certificate_key cert/2_www.aizhaohui.com.key; # 你的证书的名字
ssl_session_timeout 5m;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_prefer_server_ciphers on;



#解决vue刷新404问题
location / {
    try_files $uri $uri/ @router;
    index index.html;
}

location @router {
    rewrite ^.*$ /index.html last;
}

 
location /wss {  # 1websocket配置
        proxy_pass http://wscp;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;  
        proxy_set_header Connection "Upgrade";
    }

}

upstream wscp{
        server 116.62.220.89:8180;
}


目前问题是 调用报错:
图片描述

阅读 4.8k
1 个回答

你的 nginx 监听的是443端口, 外部连接的却是8180端口, 需要改成一样的.

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题