nginx配置wss协议,宝塔下添加wss转发

在写的即时通讯需要wss协议访问时无法连接上需要修改nginx的配置。

首先注意事项:

1.开放外网访问端口,如7123,这步骤也跳过(在服务器防火墙开放和服务器运营商那边也要开放)

2.配置ssl证书(这里跳过),下面对应https协议域名


重点配置开始:


修改项目的xxx.conf(宝塔可以直接写在伪静态那个地方,也可以修改nginx配置),添加如下内容:

 #配置websocket 协议wss
    location /wss {
      proxy_pass http://服务器IP(域名):端口;#如你的服务器IP是1.2.3.4,端口是7123,
      #这里设置http://1.2.3.4:7213,也可以直接用http://localhost:7123
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "Upgrade";
    }


如果同时需要兼容ws和wss可以这样写:

  #配置websocket 协议wss/ws转发
  location ~* ^/ws {
   proxy_pass http://服务器IP(域名):端口;#如你的服务器IP是1.2.3.4,端口是7123,
   proxy_http_version 1.1;
   proxy_set_header Upgrade $http_upgrade;
   proxy_set_header Connection "Upgrade";
  }



微信截图_20210726140258.png


重启保存重启一下nginx服务即可(在宝塔无需重启)


配置里面注意的事项:

① /wss 是转发的路径,可以自定义填写,会影响最后websocket的地址填写,如填写abc后socket地址是wss://abc.test.top/abc;


②proxy_pass的值是服务器ip(域名)可以是公网的IP、localhost、127.0.0.1、域名,协议用http就行了,不需要写https;


③端口是你服务端开放的websocket端口,比如7272、9501等,这里案例用7123,需要允许防火墙访问;

客户端链接方式:

wss://域名/wss

 

比如:wss://abc.test.top/wss

// 创建websocket    
ws = new WebSocket("wss://abc.test.top/wss");    
// 当socket连接打开时,输入用户名    
ws.onopen = onopen;    
// 当有消息时根据消息类型显示不同信息    
ws.onmessage = onmessage;    
ws.onclose = function() {    
console.log("连接关闭,定时重连");    
connect();    
};    
ws.onerror = function(e) {    
console.log("出现错误",e)    
};


评论/留言