插件窝 干货文章 jar包在linux服务器已经运行好但是访问不到地址如何解决

jar包在linux服务器已经运行好但是访问不到地址如何解决

口号 检查 端口 bash 291    来源:    2025-04-22

解决Linux服务器上JAR包运行但无法访问的问题

可能原因分析

  1. 服务未正确绑定到网络接口
  2. 防火墙或安全组规则阻止访问
  3. 应用监听地址配置问题
  4. 端口冲突
  5. 应用启动失败但进程仍在运行

排查步骤

1. 确认服务是否真正运行

# 查看Java进程
ps -ef | grep java

# 检查端口监听情况
netstat -tulnp | grep java
# 或使用ss命令
ss -tulnp | grep java

2. 检查应用监听的IP地址

# 查看应用监听的IP地址
netstat -tulnp | grep <端口号>
  • 如果显示127.0.0.1localhost,则只能本地访问
  • 需要配置为0.0.0.0才能接受所有网络接口的请求

3. 检查防火墙设置

# CentOS/RHEL
sudo firewall-cmd --list-ports
sudo firewall-cmd --add-port=<端口号>/tcp --permanent
sudo firewall-cmd --reload

# Ubuntu/Debian
sudo ufw status
sudo ufw allow <端口号>/tcp

4. 检查云服务器安全组规则

  • 登录云服务商控制台
  • 检查安全组是否放行了对应端口

5. 本地测试服务

# 在服务器本地测试
curl http://localhost:<端口号>
# 或使用服务器内网IP测试
curl http://<服务器内网IP>:<端口号>

6. 检查应用日志

# 通常日志在jar包同目录下或/var/log/目录中
tail -f /path/to/application.log

解决方案

1. 修改启动命令绑定到所有网络接口

# 如果使用Spring Boot
java -jar yourapp.jar --server.address=0.0.0.0

# 或修改application.properties
echo "server.address=0.0.0.0" >> config/application.properties

2. 指定端口运行

java -jar yourapp.jar --server.port=8080

3. 检查并释放被占用的端口

# 查找占用端口的进程
sudo lsof -i :<端口号>

# 终止占用进程
sudo kill -9 <PID>

4. 使用nohup保持服务运行

nohup java -jar yourapp.jar > app.log 2>&1 &

5. 检查Java环境

# 确认Java版本
java -version

# 如果内存不足,增加JVM内存
java -Xms256m -Xmx512m -jar yourapp.jar

高级排查

如果以上方法都无效,可以: 1. 使用telnet测试端口连通性 bash telnet <服务器IP> <端口号> 2. 使用tcpdump抓包分析 bash sudo tcpdump -i any port <端口号> -vv 3. 检查应用的配置文件,确认是否有访问限制(如Spring Security配置)

希望以上方法能帮助您解决问题!如果仍有问题,请提供更多细节如错误日志、应用框架类型等。