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

2024-01-10 10:04

本文主要是介绍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中配置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、如何判断该域名是否备案了

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

这篇关于unity小程序websocket:nginx配置https (wss)转http (ws)及其他问题解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/590418

相关文章

C#读取本地网络配置信息全攻略分享

《C#读取本地网络配置信息全攻略分享》在当今数字化时代,网络已深度融入我们生活与工作的方方面面,对于软件开发而言,掌握本地计算机的网络配置信息显得尤为关键,而在C#编程的世界里,我们又该如何巧妙地读取... 目录一、引言二、C# 读取本地网络配置信息的基础准备2.1 引入关键命名空间2.2 理解核心类与方法

Redis连接失败:客户端IP不在白名单中的问题分析与解决方案

《Redis连接失败:客户端IP不在白名单中的问题分析与解决方案》在现代分布式系统中,Redis作为一种高性能的内存数据库,被广泛应用于缓存、消息队列、会话存储等场景,然而,在实际使用过程中,我们可能... 目录一、问题背景二、错误分析1. 错误信息解读2. 根本原因三、解决方案1. 将客户端IP添加到Re

centos7基于keepalived+nginx部署k8s1.26.0高可用集群

《centos7基于keepalived+nginx部署k8s1.26.0高可用集群》Kubernetes是一个开源的容器编排平台,用于自动化地部署、扩展和管理容器化应用程序,在生产环境中,为了确保集... 目录一、初始化(所有节点都执行)二、安装containerd(所有节点都执行)三、安装docker-

详谈redis跟数据库的数据同步问题

《详谈redis跟数据库的数据同步问题》文章讨论了在Redis和数据库数据一致性问题上的解决方案,主要比较了先更新Redis缓存再更新数据库和先更新数据库再更新Redis缓存两种方案,文章指出,删除R... 目录一、Redis 数据库数据一致性的解决方案1.1、更新Redis缓存、删除Redis缓存的区别二

oracle数据库索引失效的问题及解决

《oracle数据库索引失效的问题及解决》本文总结了在Oracle数据库中索引失效的一些常见场景,包括使用isnull、isnotnull、!=、、、函数处理、like前置%查询以及范围索引和等值索引... 目录oracle数据库索引失效问题场景环境索引失效情况及验证结论一结论二结论三结论四结论五总结ora

element-ui下拉输入框+resetFields无法回显的问题解决

《element-ui下拉输入框+resetFields无法回显的问题解决》本文主要介绍了在使用ElementUI的下拉输入框时,点击重置按钮后输入框无法回显数据的问题,具有一定的参考价值,感兴趣的... 目录描述原因问题重现解决方案方法一方法二总结描述第一次进入页面,不做任何操作,点击重置按钮,再进行下

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

使用Nginx来共享文件的详细教程

《使用Nginx来共享文件的详细教程》有时我们想共享电脑上的某些文件,一个比较方便的做法是,开一个HTTP服务,指向文件所在的目录,这次我们用nginx来实现这个需求,本文将通过代码示例一步步教你使用... 在本教程中,我们将向您展示如何使用开源 Web 服务器 Nginx 设置文件共享服务器步骤 0 —

解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题

《解决mybatis-plus-boot-starter与mybatis-spring-boot-starter的错误问题》本文主要讲述了在使用MyBatis和MyBatis-Plus时遇到的绑定异常... 目录myBATis-plus-boot-starpythonter与mybatis-spring-b

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一