Websocket使用 ws 或 wss 的统一资源标志符,类似于 HTTP 或 HTTPS ,区别在于使用的是不同的通信协议。WSS是WebSocket的加密版本,需要SSL证书,是安全的,而WS没有SSL证书,是非安全的。并且使用https必须开通443端口(默认是关闭的)。
1.nginx.conf文件配置
server {
listen 443 ssl; #1.端口号443。如未添加ssl,可能会造成Nginx无法执行。
server_name 服务器域名; #2.将服务器域名处修改自己定的域名,例如:www.baidu.com。
root html;
index index.html index.htm;
ssl_certificate cert/SSL.pem; #3.将SSL.pem替换成自己的SSL的文件名。
ssl_certificate_key cert/SSL.key; #4.将SSL.key替换成自己的SSL的文件名
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;
location / {
root html;
index index.html index.htm;
}
#5.配置wss接口
location /webSocketServer {
proxy_pass http://localhost:8088;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_read_timeout 600s;
}
}
}
2.在js连接Websocket服务
websocket = new WebSocket("wss://域名/webSocketServer");
3.nginx配置wss时出现404的可能会出现的问题及解决方法
我本人出现的404问题点:nginx之前的没有关闭,nginx启动了多个,导致我后面修改的nginx.conf文件重启时,都是重启了最开始的nginx,所以我修改的nginx并没有重启。
解决方法:
①先查看nginx是否启动多个,tasklist | findstr “nginx”
②启动多个nginx的话,就先将nginx全部关闭后,再重启启动nginx即可。