ios safari反向代理连接问题

nicetry

IOS13.5 safari无法建立websocket连接

这里详细描述问题
使用nignx反向代理配置如何
location /wss{
proxy_pass http://192.168.2.5:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
proxy_set_header X-Real-IP $remote_addr;
}
workerman运行
----------------------- WORKERMAN -----------------------------
Workerman version:3.5.31 PHP version:7.3.4
------------------------ WORKERS -------------------------------
worker listen processes status
myproject websocket://192.168.2.5:8000 1 [ok]

safari可以访问 https://192.168.2.5/wss
android和PC上没有问题,不使用反向代理safari可以连接

程序代码

 var socket=new WebSocket("wss://192.168.2.5/wss");
  socket.onopen=function(){
      console.log('opened');
   };

   socket.onmessage=function(event) {

  };

  socket.onclose=function (e) {

   };
   socket.onerror=function (e) {
      document.write(JSON.stringify(e));
   };

报错信息

操作系统及workerman/webman等框架组件具体版本

window10 phpstudy
thinkphp5.1
Workerman version:3.5.31 PHP version:7.3.4

345 1 0
1个回答

yongdao35

文档说发起wss连接时不能用ip,得用ssl证书对应的域名去连。
var socket=new WebSocket("wss://192.168.2.5/wss");
改成
var socket=new WebSocket("wss://域名.com/wss");
试下。
域名必须是证书对应的域名。如果是自签名证书估计够呛,有些浏览器可能不认。

  • nicetry 2023-07-07

    但是手机只能通过ip访问PC的服务器,用域名的话死活访问不了IOS13.5 的HOSTS里面改了也不起作用,有人知道手机如何访问吗?

  • yongdao35 2023-07-07

    1、证书是正经从运营商申请的正式证书,并且没有过期
    2、证书对应的域名指向了正确的ip
    3、连接时使用证书对应的域名,不能用ip

    这三点保证了基本就没问题,有问题就就继续参考这三点

  • nicetry 2023-07-07

    在本地开发和调试,使用自签是比较好的选择,我估计是你说的“wss连接时不能用ip” 照成的,因为其他android手机没有问题,我在试试

🔝