暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

【linux-实用】websocket访问失败?

也输思雪计算机之路 2021-10-18
3216

前天写了一个PHP的 websocket服务器,但昨天部署到测试环境时,访问不了,端口绑定的是6044,但就是客户端websocket连接失败

  • 缘起

  • 阿里云安全规则捣鬼

  • 总结

缘起

前天写了一个PHP的 websocket服务器(干嘛还写websocket,不是有现成的库吗?),但昨天部署到测试环境时,访问不了,端口绑定的是6044,但就是html客户端websocket连接失败(外网ip地址加6044端口号)。本地测试没有问题,收发消息测试通过,但部署到服务器后,访问测试失败:

这是咋回事?

分析:

1,首先确认websocket服务端服务是否已打开?

确认后发现,打开着;

2,那是后台一直运行的吗?

确认是(提示用nohup 结合 & 即可);

3,那就是服务器配置了,看下端口是否打开?

确认发现,firewall-cmd 关闭的,那么应该是用的iptable,那继续查下iptable规则,发现都没问题允许一切端口

那这是怎么回事?

到这里我还是觉得端口有问题,因为代码层面不会有问题(吹牛的)。

4,然后我怀疑是Nginx配置问题

但Nginx配置和这应该无关,做个代理而已,调PHP fastcgi程序,跟着6044端口没啥关系啊,而且6044确实处于监听状态。

那这是哪有问题?

阿里云安全规则捣鬼

然后今早问了下朋友,他们服务器Nginx配置(因为还是感觉可能有问题),然后他说应该可以的,他试过,然后我说这问题,要么就是端口没打开,要么就是其他问题,然后刚好提示了他,他说测试环境是不是阿里云的,阿里云服务器默认关闭了所有端口,他也因为这坑过。

然后我测了下tcp连接6044端口(为什么用tcp测试?其实websocket本质来说建立连接后又发了次信息升级协议而已【建立连接仍是经典三次握手操作】),发现不通,那就确认为是阿里云服务器控制台页面没设置打开6044端口了。

      

最后登录阿里云控制开启端口,测试通过。

总结

本文主要是通过记录一次连接失败,来告诉大家,有时候服务器的供应商方面也得有所了解,减少错误,当然阿里云这么做利大于弊,防止某些公司的服务器的运维人员会不去设置防火墙策略,而出现安全隐患。

你遇到过这个吗?

留一个问题,下面是websocket服务器向客户端发送消息的一段代码,请问为什么要以 "\x81"开头?

点个关注吧~~~~~

关注我,不迷路哦


文章转载自也输思雪计算机之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论