前天在部署java项目到linux服务器后居然发现在postman和地址栏均无法访问接口,具体情况如下图所示:
从上图可以看出在请求这个接口时产生了一个错误,那么到底是什么原因呢?我尝试使用了curl这个命令请求这个接口在xshell中是成功的,难道又是防火墙问题?之前也遇到类似的问题,当时我是直接关闭了防火墙(firewall)然后就可以了,但现在我尝试关闭了,发现这个方法行不通了。经过一顿排查,发现原来是防火墙(firewall)对于9030这个端口没有开放,于是使用命令开发了9030这个端口并且重启了下防火墙再一请求接口,发现可以了!那么我是如何解决的呢?且听我下面慢慢讲解。
Linux中有两种防火墙软件,CentOS 7.0以上使用的是firewall,CentOS 7.0以下使用的是iptables。我的linux服务器正是使用了firewall。下面我只讲解使用firewall的防火墙的情况,使用iptables的同学请自行另外查询。
- 首先使用systemctl status firewalld命令查看firewalld防火墙是否有启动,如果为inactive (dead)状态,则需要使用systemctl start firewalld命令开启服务,然后再查看它的状态已经更改为active (running),具体效果如下图所示:
- 紧接着既然防火墙已经启动起来了,所以可以使用firewall-cmd --list-ports命令查看已经开发的端口,在开放的端口列表中发现果然没有9030这个端口,具体效果如下图所示:
- 于是可以使用firewall-cmd --zone=public --add-port=9030/tcp --permanent命令开放9030端口,执行命令如果返回success则代表开放成功了,接着使用firewall-cmd --reload命令重启下防火墙后从开放的端口列表中就可以看到有9030这个端口了,具体效果如下图所示:
- 哈哈,是不是很简单?写这篇博客时部分思路和内容我主要参考了以下两篇博客,大家如果有兴趣也可以看下。