HCRM博客

CentOS 8下调整Spring Boot应用8080端口监听限制方法

CentOS 8测试Spring Boot,8080端口仅127.0.0.1监听如何改

把项目丢进CentOS 8,一启动Spring Boot,日志里赫然出现Tomcat started on port(s): 8080 (http) with context path ''``,可浏览器里死活刷不出页面。别急着骂防火墙,先扫一眼监听地址——十有八九是127.0.0.1:8080,外网当然进不来。下面把踩坑全过程摊开,顺带把改法一次说清,照着敲命令就能让8080对外敞开。

CentOS 8下调整Spring Boot应用8080端口监听限制方法-图1

先确认是不是只绑了回环

开终端,输入`ss -ltnp | grep 8080`,如果返回`127.0.0.1:8080`,那铁定只监听本地;要是`0.0.0.0:8080`,问题就不在这,直接去看firewalld或云主机安全组。多数Spring Boot新手图省事,直接`java -jar demo.jar`,框架默认把回环当安全区,结果把自己也锁外面。

临时改法:启动参数一行搞定

不想动代码,最懒的办法是加启动参数:

`java -Dserver.address=0.0.0.0 -jar demo.jar`

`-Dserver.address=0.0.0.0`告诉内嵌Tomcat绑定所有网卡,外网IP、内网IP全放行。启动后再`ss -ltnp`,应该看到`0.0.0.0:8080`,浏览器敲`http://服务器公网IP:8080`立刻出Whitelabel Error Page也算胜利。

CentOS 8下调整Spring Boot应用8080端口监听限制方法-图2

永久改法:application.properties两行配置

把参数写进配置文件,省得每次手敲。src/main/resources里打开`application.properties`,追加:

server.address=0.0.0.0

server.port=8080

重新打jar包,上传CentOS 8,`java -jar demo.jar`,监听地址永久生效。喜欢YAML就写`application.yml`:

server:

CentOS 8下调整Spring Boot应用8080端口监听限制方法-图3

address: 0.0.0.0

port: 8080

缩进别错,错一格启动就报错。

systemd服务化:让改法跟着重启走

手动跑jar,SSH一断服务就挂。写个service文件最稳:

`sudo vim /etc/systemd/system/demo.service`

内容示例:

[Unit]

Description=Demo Spring Boot

After=network.target

[Service]

User=spring

ExecStart=/usr/bin/java -Dserver.address=0.0.0.0 -jar /opt/demo/demo.jar

SuccessExitStatus=143

Restart=on-failure

[Install]

WantedBy=multi-user.target

保存后依次执行:

`sudo systemctl daemon-reload

sudo systemctl enable demo

sudo systemctl start demo`

再`ss -ltnp`,8080已经挂在0.0.0.0,开机自启也安排明白。

防火墙别拖后腿

地址改完仍刷不出页面,八成是firewalld。一条命令放通8080:

`sudo firewall-cmd --permanent --add-port=8080/tcp

sudo firewall-cmd --reload`

云主机再去控制台勾安全组,双向放行才算完。

多网卡场景只想开内网怎么办

有些公司机器双网卡,公网IP直接暴露在eth0,不想让业务端口裸奔。可以把`server.address`写成内网地址,例如:

`server.address=192.168.10.15`

这样`ss -ltnp`只看到`192.168.10.15:8080`,外网扫描不到,办公网却能正常访问,安全又省心。

IPv6也能玩

CentOS 8默认开IPv6,如果想让同一端口同时监听IPv4与IPv6,直接`0.0.0.0`即可,Tomcat会额外绑定`:::8080`。若只想IPv6,就写:

`server.address=::`

浏览器用`http://[IPv6地址]:8080`访问,注意中括号别丢。

常见报错速查

端口被占用:`Address already in use`,换端口或杀掉旧进程。

地址无效:`Cannot assign requested address`,填错网卡IP,`ip addr`核对再写。

SELinux拦截:日志出现`SELinux is preventing`,要么关SELinux,要么给端口打标签:

`sudo semanage port -a -t httpportt -p tcp 8080`

一键脚本总结

懒人把下面脚本存成`fix-8080.sh`,传到服务器直接跑:

#!/bin/bash

绑定到所有网卡并放通防火墙

sudo firewall-cmd --permanent --add-port=8080/tcp

sudo firewall-cmd --reload

nohup java -Dserver.address=0.0.0.0 -jar demo.jar > app.log 2>&1 &

echo "Spring Boot已监听0.0.0.0:8080,日志输出到app.log"

`chmod +x fix-8080.sh && ./fix-8080.sh``,完事。

本站部分图片及内容来源网络,版权归原作者所有,转载目的为传递知识,不代表本站立场。若侵权或违规联系Email:zjx77377423@163.com 核实后第一时间删除。 转载请注明出处:https://blog.huochengrm.cn/pc/41691.html

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
请登录后评论...
游客游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~