需求: 定制软件开发小程序连接websocket,必须使用wss协议
配置websocket以及wss协议
其实wss定制软件开发协议就是使用了ssl定制软件开发协议的域名所自带的协议,所以wss定制软件开发协议需要域名来进行连接,并且开通ssl证书访问即可。
首先部署项目:
项目的websocket接口在内部为: localhost:28888
也就是本地通过 ws://localhost:28888 进行socket连接,当然因为使用域名wss,所以此处需要放到服务器 ws://你的服务器ip:28888 (这样访问的前提是将28888加入开放端口)
首先设置新二级域名的dns解析
并且开通ssl证书
下载ssl证书(此处使用腾讯云,里面有nginx部署ssl证书教程)
上传ssl证书到服务器,并将证书部署到对应的二级域名
nginx配置websocket
map $http_upgrade $conn_upgrade { default upgrade; '' close; } server { listen 80; listen 443 ssl; server_name www.aaa.com; # 按实际域名添加 # 证书地址(根据喜好选择文件夹) ssl_certificate /www/wwwcertificate/xxx.crt; # 按实际文件名填 # 证书key地址 ssl_certificate_key /www/wwwcertificate/xxx.key; ssl_session_timeout 5m; ssl_protocols TLSv1.2 TLSv1.3; #请按照以下套件配置,配置加密套件,写法遵循 openssl 标准。 ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE; ssl_prefer_server_ciphers on; location /ws { #网站主页路径。此路径仅供参考,具体请您按照实际目录操作。 #例如,您的网站运行目录在/etc/www下,则填写/etc/www。 proxy_pass http://localhost:28888; # 本地服务的ws连接端口 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connetion $conn_upgrade; } }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
主要涉及到ws的配置是
proxy_set_header Upgrade $http_upgrade;proxy_set_header Connetion $conn_upgrade;
- 1
- 2
这两行配置的意思是将http协议升级为ws协议。变量值为前面定义的map
这样跳转会有个有意思的地方,那就是在服务端获取localhost:28888后面的参数时,会将上级代理的参数也获取到
比如:使用 www.aaa.com/ws连接ws,那么会获取到uri为/ws。这里明明是:
location /ws { proxy_pass http://localhost:28888; # ... }
- 1
- 2
- 3
- 4
按道理应该是 www.aaa.com/ws/ws对应是localhost:28888/ws,uri才是/ws,
此处也就是说,最终获取的其实是连接域名的uri,而不管是否经过代理