原理说明
其实 wss 认证和 https 认证没什么区别,只是需要单独添加两个格外的 header ,支持一下 ws 协议升级而已,所以直接copy 一个 https 模版进行简单的变更即可文章来源地址https://www.toymoban.com/news/detail-753339.html
链接简历过程
ws 建立连接过程
- 前端向后段发送标准的http连接请求,并携带升级协议相关参数,同时设置一个安全密钥
- Connection: Upgrade:表示要升级协议
- Upgrade: websocket:表示要升级到websocket协议。
- Sec-WebSocket-Version: 13:表示websocket的版本。如果服务端不支持该版本,需要返回一个Sec-WebSocket-Versionheader,里面包含服务端支持的版本号。
- Sec-WebSocket-Key:与后面服务端响应首部的Sec-WebSocket-Accept是配套的,提供基本的防护,比如恶意的连接,或者无意的连接。
- 后段回复协议同意升级,并回复相关信息内容
- Connection:Upgrade
- Upgrade: websocket
- Sec-WebSocket-Accept: byzN0AQ13jhfONC1bP8dTKb4PTU=
注意事项
- xxxxxx.net 换成自己的域名
- pem和key不要过期,注意路径要正确
nginx 配置 wss 协议的配置文件如下
#以下属性中,以ssl开头的属性表示与证书配置有关。
server {
#配置HTTPS的默认访问端口为443。
#如果未在此处配置HTTPS的默认访问端口,可能会造成Nginx无法启动。
#如果您使用Nginx 1.15.0及以上版本,请使用listen 443 ssl代替listen 443和ssl on。
listen 443 ssl;
#填写证书绑定的域名
server_name xxxxxx.net;
#填写证书文件名称
ssl_certificate /opt/pki/xxxxxx.net.pem;
#填写证书私钥文件名称
ssl_certificate_key /opt/pki/xxxxxx.net.key;
ssl_session_timeout 5m;
#表示使用的加密套件的类型
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
#表示使用的TLS协议的类型,您需要自行评估是否配置TLSv1.1协议。
ssl_protocols TLSv1.1 TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
access_log logs/xxxxxx.net.access.log main;
location /ws {
proxy_pass http://localhost:31697;
proxy_read_timeout 500;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_http_version 1.1;
# ws 协议专用头
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
}
}
文章来源:https://www.toymoban.com/news/detail-753339.html
到了这里,关于nginx 配置 wss 协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!