unity小程序websocket:nginx配置https (wss)转http (ws)及其他问题解决

目录

前言

实际运用场景

处理流程如下

nginx配置ssl和wss

配置过程中遇到的问题

1、无法连接服务器

2、通过IP可以访问,域名却不行

问题描述

解决

3、如何判断该域名是否备案了


前言

为了服务器网络的通用性,我们在实现移动端的游戏转微信小程序使用websocket。对于微信小程序官方给出的技术标准是必须使用https+域名的访问方式(使用websocket也必须是wss 即:支持https的websocket),但是https的key稀缺性和我们的服务器是分布式部署的,不可能在每一个于客户端链接服务器都配置key ,所以服务器仅支持http的websocket即ws

基于此,我们需要通过nginx代理来处理转发的问题。 这样https的证书只需要在nginx中配置,同时在nginx中配置wss 转ws的就可以了。


实际运用场景

1、 unity客户端小程序的wss协议实际是websocket+SSL

2、利用nginx代理wss协议转发ws协议

3、java服务器收到代理的ws协议并进行逻辑处理

处理流程如下


nginx配置ssl和wss

HTTPS server

server {

listen 443 ssl;

server_name laile.lovecandy9.com;

ssl_certificate /usr/local/nginx/conf/laile.cftap.top_bundle.crt;

ssl_certificate_key /usr/local/nginx/conf/laile.cftap.top.key;

ssl_session_cache shared:SSL:1m;

ssl_session_timeout 5m;

ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

ssl_prefer_server_ciphers on;

location /login {

proxy_pass http://127.0.0.1:82;

proxy_http_version 1.1;

#proxy_set_header Upgrade "websocket";

proxy_set_header Upgrade $http_upgrade;

proxy_set_header Connection "Upgrade";
proxy_set_header X-real-ip remote_addr; proxy_set_header X-Forwarded-For remote_addr;

proxy_read_timeout 600s;

}

}

这样小程序的new websocket(wss://域名/login)实际访问的就是http://127.0.0.1:82地址服务器


配置过程中遇到的问题

1、无法连接服务器

1)路径错误引起

由于客户端并没有添加域名+/login链接失败问题

2)服务器触发了链接激活消息即netty的channelActive消息,但是没有给客户返回

对于客户后端的表现结果是websocket.open的回调没有不能触发

最终的结果因为nginx配置错误引起,没有配置

//加密算法

ssl_protocols SSLv3 SSLv2 TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;

//头部信息

proxy_set_header X-real-ip remote_addr; proxy_set_header X-Forwarded-For remote_addr;


2、通过IP可以访问,域名却不行

问题描述

通过IP可以访问,通过域名不行,但是通过cmd中的ping 检查域名没有问题,可以ping通,

通 过代码wss://域名访问的时候却不能连接服务器

解决

我们怀疑是不是服务器防火墙的问题;怀疑我们java写的websocket问题,其实最终都不是。

最后查找到是由于域名在腾讯云备案,但是服务器是阿里云的,需要重新在阿里云备案。

我们的解决方案是换了个在阿里云备案的域名完美解决该问题。当然https的key要与该域名一一对应。

3、如何判断该域名是否备案了

打开浏览器输入你的域名,如果出现以下页面,那么你的域名大概率是没有备案的

相关推荐
黑妹天下第一乖4 小时前
255 次尝试就能恢复 CA 私钥?这次 TLS 信任链事故,值得每个 AI 开发者警惕
人工智能·python·https·tls·信任链·ca
Lsetea5 小时前
curl下载HTTPS文件报23:证书验证成功与本地写入失败分层排查
linux·https·shell·ssl证书·curl
2501_915909066 小时前
Ipa Guard 防护上架,混淆、重签名和回归测试怎么做
android·ios·小程序·https·uni-app·iphone·webview
Lsetea8 小时前
curl访问HTTPS返回304却没有正文:条件请求、缓存与证书验收排查
linux·http·https·ssl证书·curl
李纲明10 小时前
微信小程序 web-view 打开空白或提示未配置业务域名:校验文件、HTTPS 与跳转域名排查
前端·微信小程序·https·web-view·小程序开发·业务域名
淡海水10 小时前
06-03-源码-时间分片与调度策略
unity·c#·gc
济南壹软网络科技有限公司10 小时前
盲盒源码系统小程序V6MAX底层架构解析,PHP+Uniapp高性能商用底座发布
小程序·架构·uni-app
2501_9159184111 小时前
iOS 上架注意事项有哪些?Appuploader 的四个阶段自查清单
android·ios·小程序·https·uni-app·iphone·webview
Autumn_ing11 小时前
AI原型设计工具怎么选?可编辑原型与可运行前端适合什么场景
前端·小程序·产品经理·代码·codex·墨刀ai客户端·ai原型
fengGer的bugs11 小时前
微信小程序实战:本地存储的新生儿喂养记录(原生 + 四套主题 + 疫苗日程)
微信小程序·小程序