• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

android - 到 nginx 的 SSL 套接字连接在某些 android 和 ios 设备上不起作用

[复制链接]
菜鸟教程小白 发表于 2022-12-11 20:46:31 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我已经为 androidios 开发了一个 react native 游戏。它通过套接字连接到使用 digi cert SSL 证书运行的 nginx 服务器。在 nginx 后面,4 个 node.js 服务器正在运行 分别为 3000、3001、3002、3017 端口。整个架构位于 AWS EC2 c5.x 实例中。 AWS 防火墙的所有入站和出站端口都开放用于测试目的。

我可以从我的笔记本电脑浏览器监听相应的端口,它会给出正确的响应。另一方面,移动应用程序仅通过套接字进行通信。

有些设备无法连接到服务器(socket 'connect' 事件没有被监听并显示 websocket 连接错误),而其他设备可以轻松连接。

显示如下错误:

Error: websocket error
    at WS.Transport.onError (/home/ubuntu/TTP-Server/node_modules/engine.io-client/lib/transport.js:64:13)
    at WebSocket.ws.onerror (/home/ubuntu/TTP-Server/node_modules/engine.io-client/lib/transports/websocket.js:150:10)
    at WebSocket.onError (/home/ubuntu/TTP-Server/node_modules/engine.io-client/node_modules/ws/lib/EventTarget.js:109:16)
    at emitOne (events.js:116:13)
    at WebSocket.emit (events.js:211:7)
    at WebSocket.finalize (/home/ubuntu/TTP-Server/node_modules/engine.io-client/node_modules/ws/lib/WebSocket.js:182:41)
    at ClientRequest._req.on (/home/ubuntu/TTP-Server/node_modules/engine.io-client/node_modules/ws/lib/WebSocket.js:647:10)
    at emitOne (events.js:116:13)
    at ClientRequest.emit (events.js:211:7)
    at Socket.socketErrorListener (_http_client.js:387:9)

所有设备均在android 6和ios 10以上版本

我已根据在线 SSL 验证器检查了我的网站。它显示了以下结果:

enter image description here

这是我的相关文件和代码:

nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events
{
  worker_connections 768;
}

http
{
  sendfile on;
  tcp_nopush on;
  tcp_nodelay on;
  keepalive_timeout 65;
  types_hash_max_size 2048;

  include /etc/nginx/mime.types;
  default_type application/octet-stream;

  ssl on;
  ssl_certificate    PATH_TO_CRT_FILE;
  ssl_certificate_key    PATH_TO_KEY_FILE;

  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_prefer_server_ciphers on;

  access_log /var/log/nginx/access.log;
  error_log /var/log/nginx/error.log;

  gzip on;
  gzip_disable "msie6";

  include /etc/nginx/conf.d/*.conf;
  include /etc/nginx/sites-enabled/*;

  upstream lobby
  {
     server 127.0.0.1:3000;
  }

  upstream table_1
  {
     server 127.0.0.1:3001;
  }

   upstream table_2
  {
     server 127.0.0.1:3002;
  }

  upstream analytics
  {
     server 127.0.0.1:3017;
  }

  server
  {
    listen 443;
    server_name tpa;

    location /3000/
    {
      proxy_pass http://lobby/;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }

    location /3001/
    {
      proxy_pass http://table_1/;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }

    location /3002/
    {
      proxy_pass http://table_2/;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }

    location /3017/
    {
      proxy_pass http://analytics/;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
    }
  }
}

在我的 react native 代码中,我使用了节点的 Socket.IO我正在使用以下代码进行连接:

let options = {
   transports: ["websocket"],
   query: `userID=${this.props.phoneNumber}&ipAddress=${ip}&sessionId=${uuid}`,
   reconnection: true,
   reconnectionAttempts: Infinity,
   path: "/3000/socket.io"
};

socket = io(`${Constants.serverIP}`, options);

自从过去 2 天以来,它让我彻夜难眠。请帮忙。谢谢。



Best Answer-推荐答案


在做了很多工作后,我能够解决这个问题。它可能会帮助其他人在同一架构上工作。

多次深入研究后:

  • AWS 架构
  • Nginx 配置
  • nginx 访问和错误日​​志
  • 网络防火墙
  • node.js 服务器日志

我得出的结论是,这不是 Nginx 或 AWS 端的问题,似乎是域或中间服务器的问题。

我尝试检查网络的上一级。之后,我遇到了一些配置:

  • 一些请求没有被记录在 nginxaccess.logerror.log 文件中。
  • 在 Go Daddy 注册的域拥有 Wiplon 服务器的 NS 记录。
  • Wiplon 服务器创建了一个子域,并重定向到 aws 服务器。 还有A ip-4地址重定向记录集。

我已经创建了一个图表以供理解:

enter image description here

这导致流量转移到 wiplon 服务器和记录集中的任何一个, 这是问题的根本原因。

解决方案: 从 Wiplon Cpanel 删除子域重定向解决了这个问题。还要确保 DNS 区域中只有一个 A ip4 记录,使问题得到 100% 解决。

我之前没有遇到过此类问题,因为我们通常假设更高级别的网络配置并且已经由域和 DNS 提供商很好地处理。

在那之后,我再也没有在任何 ios 或 android 设备上遇到过任何连接问题。

关于android - 到 nginx 的 SSL 套接字连接在某些 android 和 ios 设备上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53133460/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap