排查服务不可用是否防火墙配置问题的小窍门
今天用workerman实现一个WebSocket长链接时,在开发环境没问题,但在生产环境(做了反向代理)就一直连接不上,在解决这个问题时有些心得,跟大家分享一下。
在不同服务器间做数据转发(如在nginx等web服务器中做反向代理等场景)时,通常会依据端口转发,有时候配置好的转发规则硬是不生效,例如出现504错误,让人非常头疼。
其实这种情况很大可能是因为防火墙的设置引起的,因为用来做转发的端口往往是一些不常用的端口,而这些端口默认情况下是不开放访问的。那怎么排查这些端口是否开放访问呢?一个当然是查看防火墙的配置了,另外在这里想给大家介绍一个简单直接的办法,就是先用本机的IP+端口访问一下,在这里需要注意的是:通常服务器群都会做跳板机处理,这样一来会更加安全,二来也可以节省购买公网IP的费用,不过这样就会导致只有一个公网IP,其它的服务器都是通过端口转发的方式去访问,无法直接用外网IP或域名访问业务服务器,这时可以登录上云,先使用本地IP+端口访问,只要是正常的,再在接收转发的机子访问一下,如果访问不了,基本可以确认是防火墙问题,去检查一下防火墙的转发规则,将业务服务器入方向的端口允许跳板机访问就可以了。