云服务器部署springboot项目无法访问解决办法

文章目录

  • 部署环境
  • 问题解决
    • ipv4和ipv6的问题
    • 防火墙的问题

部署环境

  • 在华为云上购买了一个云的ecs服务器
  • 安装的centos7.5的操作系统。
  • 部署面板采用了宝塔linux。
  • springboot的访问端口为8080。
  • 在华为云的安全组规则中配置了8080端口放通。

碰到的问题是,上传了springboot项目打包后的jar文件后,使用ip+端口的方式无法正常访问项目界面。

问题解决

ipv4和ipv6的问题

验证的第一步,就是看一下端口是不是真的在监听
使用netstat -nat|grep 8080命令,得到的效果如下:

tcp6 0 :::8080 ::: * LISTEN

问题找到,项目启动后,在ipv6的端口监听,自然无法接收不到ipv4的请求。

在application.yml中增加server.address = 0.0.0.0无法解决问题

解决方案是:
在启动命令中增加 -Djava.net.preferIPv4Stack=true参数,也就是
java -Djava.net.preferIPv4Stack=true -jar xxxx.jar来启动项目即可。

启动后,在通过netstat -nat|grep 8080命令,得到的结果就是:
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN

这就是在ipv4的端口了。

防火墙的问题

我在解决了上面的问题之后,发现还是没法访问,幸好其他的同事提醒我,centos刚安装之后,防火墙需要设置。
用telnet ip 8080试了一下,没用,确认了该问题
因为在centos上,入站流量默认被拒绝,所以需要手动将一些端口打开。

几条关键命令:

  1. 查看防火墙是否打开
    firewall-cmd --state

  2. 查看端口是否打开
    firewall-cmd --query-port=8080/tcp

输出yes或no,如果没有设置,输出为no

  1. 打开端口
    firewall-cmd --zone=public --add-port=8080/tcp --permanent

–zone=public:表示作用域为公共的;

–add-port=8080/tcp:添加tcp协议的端口8080;

–permanent:永久生效,如果没有此参数,则只能维持当前服务生命周期内,重新启动后失效;

  1. 重新载入配置
    firewall-cmd --reload

问题搞定。

你可能感兴趣的:(spring,boot,java,无法访问,防火墙,ipv6)