云服务器部署springboot项目无法访问解决办法
部署环境
- 在华为云上购买了一个云的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上,入站流量默认被拒绝,所以需要手动将一些端口打开。
几条关键命令:
-
查看防火墙是否打开
firewall-cmd --state -
查看端口是否打开
firewall-cmd --query-port=8080/tcp
输出yes或no,如果没有设置,输出为no
- 打开端口
firewall-cmd --zone=public --add-port=8080/tcp --permanent
–zone=public:表示作用域为公共的;
–add-port=8080/tcp:添加tcp协议的端口8080;
–permanent:永久生效,如果没有此参数,则只能维持当前服务生命周期内,重新启动后失效;
- 重新载入配置
firewall-cmd --reload
问题搞定。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)