努力
加油

腾讯云轻量服务器部署Java应用后无法访问怎么办?

腾讯云轻量应用服务器(Lighthouse)部署 Java 应用后无法访问,是新手最容易踩坑的场景之一。这通常不是代码问题,而是网络连通性或服务监听状态的问题。

按照从外到内、从简到繁的逻辑,请依次排查以下五个关键点:

1. 检查安全组规则(最常见原因)

轻量服务器的安全组默认只开放了 SSH (22)、HTTP (80) 和 HTTPS (443) 端口。如果你的 Java 应用运行在自定义端口(比如 8080, 8090, 8888 等),必须手动放行。

  • 操作路径:登录腾讯云控制台 -> 轻量应用服务器列表 -> 点击你的实例 -> 防火墙(或“安全组”标签页)。
  • 动作:添加一条入方向规则。
    • 协议:TCP
    • 端口范围:你 Java 应用监听的端口(例如 8080)
    • 授权对象:0.0.0.0/0 (表示允许所有 IP 访问)
    • 策略:允许
  • 注意:修改规则后通常立即生效,无需重启服务器。

2. 确认 Java 进程是否在运行且绑定地址正确

很多时候应用启动了,但日志报错退出了,或者启动失败了。

  • 查看进程:
    使用 SSH 连接服务器,执行:

    ps -ef | grep java

    如果看不到你的 jar 包或 war 包对应的进程,说明应用没起来。去查看你的启动日志(如 nohup.out 或 systemd 的 journalctl 日志),寻找 Exception 或 Error。

  • 检查监听端口:
    如果进程存在,检查它是否真的在监听你期望的端口:

    netstat -tlnp | grep <你的端口号>
    # 或者
    ss -tlnp | grep <你的端口号>

    关键细节:

    • 如果输出显示 0.0.0.0:8080 或 *:8080,说明监听所有网卡,外部可访问。
    • 如果输出显示 127.0.0.1:8080,说明只监听了本地回环接口。这是导致网络无法访问的直接原因。你需要检查 Spring Boot 的配置文件(application.yml 或 properties),确保没有设置 server.address=127.0.0.1,或者显式设置为 0.0.0.0。

3. 检查应用内部的防火墙(iptables/firewalld)

虽然轻量服务器主要靠腾讯云的安全组,但 Linux 系统内部也可能有防火墙拦截。

  • CentOS/RedHat 系列:

    systemctl status firewalld

    如果处于 active (running) 状态,尝试临时关闭测试:

    systemctl stop firewalld

    如果关闭后能访问,说明是系统防火墙问题。建议配置永久放行而非直接关闭:

    firewall-cmd --permanent --add-port=8080/tcp
    firewall-cmd --reload
  • Ubuntu/Debian 系列:
    默认可能没有开启 ufw,但如果开启了:

    sudo ufw allow 8080/tcp

4. 验证本地连通性(排除浏览器缓存或 DNS 问题)

有时候应用其实已经通了,但你的电脑访问有问题。

  • Ping 测试:
    在本地终端 Ping 服务器公网 IP,看是否能通。如果 Ping 不通,可能是服务器禁用了 ICMP 或运营商限制了 ICMP,但这不影响 TCP 连接。
  • Telnet 测试:
    在本地 Windows CMD 或 Mac/Linux 终端执行:

    telnet <你的公网IP> 8080

    或者

    nc -vz <你的公网IP> 8080
    • 如果提示连接成功或显示 Open,说明网络层完全没问题,问题出在你的 Java 应用返回的内容(比如返回了 500 错误,或者响应体太大导致浏览器卡住)。
    • 如果提示连接超时或拒绝,回到第 1、2、3 步继续排查。

5. 反向XX与 Nginx 配置(进阶场景)

如果你是通过域名访问,或者使用了 Nginx 做反向XX指向 Java 应用的 8080 端口:

  • Nginx 是否运行:ps -ef | grep nginx
  • Nginx 配置是否正确:检查 /etc/nginx/conf.d/ 或 /etc/nginx/nginx.conf 中的 proxy_pass http://127.0.0.1:8080; 是否正确。
  • 权限问题:确保运行 Nginx 的用户有权限读取后端应用的响应。

快速自检清单(Copy-Paste 版)

  1. [ ] 安全组:腾讯云控制台已放行 TCP 端口 xxx。
  2. [ ] 进程:ps -ef | grep java 能看到你的应用进程。
  3. [ ] 监听:netstat -tlnp | grep xxx 显示 0.0.0.0:xxx 而不是 127.0.0.1:xxx。
  4. [ ] 系统防火墙:systemctl status firewalld 已停止或已放行端口。
  5. [ ] 本地测试:telnet <IP> <Port> 连接成功。

特别提醒:
如果是 Spring Boot 应用,打包时请确保依赖完整。很多新手直接在 IDE 里 Run 没问题,打成 Jar 包后因为缺少某些 classpath 下的资源或依赖版本冲突导致启动失败(静默退出或报错退出),请务必查看 nohup.out 或启动脚本的标准错误输出。