需求: 小程序连接websocket,必须使用wss协议
nginx配置websocket以及wss协议
其实wss协议就是使用了ssl协议的域名所自带的协议,所以wss协议需要域名来进行socket连接,并且开通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;
}
}
主要涉及到ws的配置是
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connetion $conn_upgrade;
这两行配置的意思是将http协议升级为ws协议。变量值为前面定义的map
这样跳转会有个有意思的地方,那就是在服务端获取localhost:28888后面的参数时,会将上级代理的参数也获取到
比如:使用 www.aaa.com/ws连接ws,那么会获取到uri为/ws。这里明明是:
location /ws {
proxy_pass http://localhost:28888;
# ...
}
按道理应该是 www.aaa.com/ws/ws对应是localhost:28888/ws,uri才是/ws,
此处也就是说,最终获取的其实是连接域名的uri,而不管是否经过代理
最后
深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
小编已加密:aHR0cHM6Ly9kb2NzLnFxLmNvbS9kb2MvRFVrVm9aSGxQZUVsTlkwUnc==出于安全原因,我们把网站通过base64编码了,大家可以通过base64解码把网址获取下来。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)