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

news2024/11/20 22:38:00

目录

前言

实际运用场景

处理流程如下

nginx配置ssl和wss

配置过程中遇到的问题

1、无法连接服务器 

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

     问题描述

      解决

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


前言

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

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


实际运用场景

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、如何判断该域名是否备案了

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1370825.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

植物大战僵尸小游戏抖音快手直播搭建弹幕插件教程

植物大战弹幕插件功能介绍 该插件由梦歌技术部团队支持开发,本插件软件通过监测抖音弹幕信息,获取礼物数据触发脚本插件对应的功能; 功能目前基本上已经完善,后期功能会陆续上线支持更新,全新的脚本监测稳定方便实用…

2024年1月9日学习总结

目录 学习目标学习内容联邦学习基础:why, what, howwhy?what?how? 联邦学习的例子——CIFAR-10数据集(分类问题)1、import libararies2、hyper-parameters3、加载并且划分数据4、创建神经网络模型5、helper…

易基因:ChIP-seq等揭示WWOX基因通过上调Myc促进骨肉瘤发生发展的表观调控机制|Cell Death Dis

大家好,这里是专注表观组学十余年,领跑多组学科研服务的易基因。 骨肉瘤(Osteosarcoma, OS)是一种高侵袭性骨肿瘤,主要影响儿童和青少年。这种恶性肿瘤与不良临床结果相关,尤其是肺转移。由于其罕见性和生…

【7-zip密码】7-Zip如何取消文件加密的密码

7z压缩包设置了密码,解压的时候就需要输入正确的密码才能顺利解压出文件,正常当我们解压文件或者删除密码的时候,虽然方法多,但是都需要输入正确的密码才能完成。忘记密码就无法进行操作。 那么,忘记了7z压缩包的密码…

Ubuntu20二进制方式安装nginx

文章目录 1.下载nginx安装包2.安装nginx3.安装出现的问题及解决方案错误1:错误2:错误3: 4.常用命令5.知识扩展: 1.下载nginx安装包 nginx官网:http://nginx.org/en/download.html 选择稳定的nginx版本下载。 2.安装ngi…

SWM341系列之SWM34SRET6介绍

SWM341系列的介绍 本文介绍了华芯微特SWM341系列主要性能,和其系列之一的SWM34SRET6-50驱动4.3寸800*480 TFTLCD显示的例程应用。 SWM341系列性能 SWM341是一款基于ARM Cortex-M33的32位微控制器,片上包含精度为 1%以内的 20MHz/40MHz 时钟,最…

Java18:网络编程

一.对象序列化: 1.对象流: ObjectInputStream 和 ObjectOutputStream 2.作用: ObjectOutputSteam:内存中的对象-->存储中的文件,通过网络传输出去 ObjectInputStream:存储中的文件,通过网络传输出去…

状态管理小能手:Cookie 和 Session

1. 引言 大家好,我是小❤,一个漂泊江湖多年的 985 非科班程序员,曾混迹于国企、互联网大厂和创业公司的后台开发攻城狮。 假期抢票的尴尬事件 最近小❤在抢出行的高铁票时,发生了一件尴尬的事情。 这不是临近假期了嘛&#xf…

【数字图像处理】水平翻转、垂直翻转

图像翻转是常见的数字图像处理方式,分为水平翻转和垂直翻转。本文主要介绍 FPGA 实现图像翻转的基本思路,以及使用紫光同创 PGL22G 开发板实现数字图像水平翻转、垂直翻转的过程。 目录 1 水平翻转与垂直翻转 2 FPGA 布署与实现 2.1 功能与指标定义 …

SSM 基础知识点

1. IoC IoC—Inversion of Control,即“控制反转”,不是什么技术,而是一种设计思想。在 Java 开发中,IoC 意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。 谁控制谁,控制什么&…

Linux网络配置

一、查看网络配置 1、查看网络接口信息ifconfig 1.查看所有活动的网络接口信息 2.查看指定网络接口信息 ifconfig 网络接口 ifconfig -a #显示所有活动及非活动的连接 ifconfig网络接口 ifconfig -a #显示所有活动及非活动的连接 主机的网络接口卡(网卡)通常称为网络接口…

QT上位机开发(动态添加控件)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 开发界面的时候,大多数情况下,我们都是推荐优先使用designer来进行界面开发。但凡事总有例外,如果控件本身数量…

C#编程-实现在文本文件中的读和写

实现在文本文件中的读和写 Stream类用于从文本文件读取数据和向文本文件写入数据。它是一个抽象类,支持向流读写字节。如果文件的数据仅是文本,那么您可以使用StreamReader类和StreamWriter类来完成相应的读和写任务。 StreamReader类 StreamReader类继承自从抽象类TextRea…

扩展边界opencv

扩展图像的边缘(如上边增加50像素)通常是通过添加额外的像素行来实现的 使用cv2.copyMakeBorder函数 valueborder_color指定了边框的颜色 import cv2 import numpy as np# 读取图像 image cv2.imread(th.jpg)# 设置边框宽度 top_border_width 50 # …

三、nginx代理功能

目录 SQUID代理服务器配置安装squid编辑squid配置文件 定义拒绝访问启动squid服务 linux客户端配置linux客户端配置正向代理测试http代理服务器上查看日志/var/log/squid/access.log windows 也可以配置网页代理 SQUID代理服务器配置 安装squid yum install squid -y 编辑squ…

Hive基础知识(六):Hive 配置运行日志信息、打印当前库和表头、参数配置方式

1. Hive 运行日志信息配置 1)Hive 的 log 默认存放在/tmp/atguigu/hive.log 目录下(当前用户名下) 2)修改 hive 的 log 存放日志到/opt/module/hive/logs (1)修改/opt/module/hive/conf/hive-log4j2.prop…

【GNN 1】PyG实现图神经网络,完成节点分类任务,人话、保姆级教程

我们来做一个节点分类的任务,选择的数据集是Karate Club,Karate是空手道的意思,所以这就是一个空手道俱乐部的数据。 简而言之,这个数据集,包含34个节点,156条无向无权边,结点总共分为4类&…

AI绘画:Midjournety的使用体验

今天的时间少,没有给大家做一些教程,就单纯分享使用体验,还不错,体验感很好。 后需如果有需要,我可以出一些教程类的视频。 下面是一组复刻fated的saber的一组提示词,效果相当不错。我后续会分享一些学习经…

uniapp自定义顶部导航并解决打包成apk后getMenuButtonBoundingClientRect方法失效问题

需求:要在app上的顶部导航提示哪里添加一些东西进去,用uniapp自带的肯定不行啊,所以自定义了所有的页面的顶部导航,之后自定义后用手机调试发现 uni.getMenuButtonBoundingClientRect()这个方法的top获取不到....网上找了很多种方…

基于 InternLM 和 LangChain 搭建你的知识库

基于 InternLM 和 LangChain 搭建你的知识库 大模型开发范式LLM的局限性:RAG 检索增强生成 LangChain简介构建向量数据库搭建知识库助手Web Demo部署环境配置下载 NLTK 相关资源下载本项目代码 大模型开发范式 LLM的局限性: 知识实效性受限&#xff1a…