大家好,欢迎来到IT知识分享网。
原理说明
其实 wss 认证和 https 认证没什么区别,只是需要单独添加两个格外的 header ,支持一下 ws 协议升级而已,所以直接copy 一个 https 模版进行简单的变更即可
链接简历过程
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"; } }
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.csdn.net/weixin_/article/details/
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/142690.html