在腾讯云轻量应用服务器(Lighthouse)上部署 Java 项目,端口开放的核心逻辑其实就两点:业务端口和管理端口。
很多新手容易犯的错误是只开了一个端口,或者为了省事全开,导致安全隐患或连接失败。下面我把最常规、最稳妥的方案拆解给你,分场景说明。
1. 核心必开端口:你的 Java 应用监听端口
这是最重要的一点。Java 应用(无论是 Spring Boot 打包的 Jar,还是传统的 WAR 包部署到 Tomcat)默认监听哪个端口,你就必须开放哪个端口。
-
常见情况 A:Spring Boot 内嵌 Tomcat
- 默认端口:8080
- 如果你修改了
application.yml或properties中的server.port=80,那就开放 80。 - 操作:在腾讯云控制台 -> 防火墙规则中,添加一条 TCP 协议规则,源地址设为
0.0.0.0/0(表示允许所有 IP 访问),目标端口填你实际监听的端口。
-
常见情况 B:独立 Tomcat/Jetty
- 默认端口:8080 (Tomcat) 或 8080/9090 (Jetty)
- 同样,去你的
conf/server.xml里看<Connector port="..." />配置的是多少,就开多少。
注意:Java 代码里的
localhost或127.0.0.1绑定只允许本机访问。如果你希望外部能访问,确保启动时绑定的是0.0.0.0或者不指定 host(Spring Boot 默认就是 0.0.0.0)。
2. 辅助管理端口(按需开放)
这些端口不是必须开的,但为了方便运维和调试,通常会开几个。
-
SSH 远程登录端口
- 默认端口:22
- 强烈建议:保持开启,否则你连不上服务器,只能去控制台 VNC 救火,体验极差。
- 安全优化:如果可能,建议在防火墙中将 SSH 的源地址限制为你的固定办公 IP,而不是
0.0.0.0/0,防止暴力破解。
-
JMX / 监控端口
- 如果你在服务器上跑了 Arthas、Prometheus Node Exporter 或者自定义 JMX 监控。
- 例如 Arthas 默认 Dashboard 端口可能是 9999 或其他自定义端口。
- 原则:谁需要被公网访问,就开谁的端口。内部组件间通信(如 Java 进程间)走 localhost 即可,无需对外暴露。
-
数据库端口(极少情况)
- 如果你的 Java 项目直接连接轻量服务器本地安装的 MySQL/Redis,不需要对公网开放 3306/6379。
- 切记:永远不要将数据库端口直接暴露在公网!这是黑客XX和勒索病毒的首选目标。如果非要远程连数据库,请使用 SSH 隧道或云厂商提供的数据库服务(如腾讯云 CDB),它们有独立的安全组和网络隔离。
3. 高级用法:反向XX与标准端口
直接让用户访问 http://your-ip:8080 体验不好,也不专业。推荐做法是:
- 开放 80 和 443 端口(HTTP/HTTPS 标准端口)。
- 在服务器上安装 Nginx。
- 配置 Nginx 反向XX,将 80/443 的请求转发到本地的 8080(你的 Java 应用端口)。
- 此时,Java 应用的 8080 端口可以只在服务器内部通过 localhost 访问,甚至可以在防火墙中关闭 8080 的网络访问权限,只保留 80/443。 这样更安全,且用户访问时无需输入端口号。
4. 腾讯云轻量服务器的特殊注意事项
轻量应用服务器的防火墙分为两层,你必须都配好:
-
腾讯云控制台防火墙(第一道防线)
- 路径:控制台 -> 轻量应用服务器 -> 实例详情页 -> 防火墙。
- 这里设置的是“云网络层”的放行规则。比如你在这里没开 8080,请求根本到不了你的操作系统。
-
操作系统内部防火墙(第二道防线)
- 轻量服务器默认镜像通常内置了
firewalld或iptables。 - 即使你在腾讯云控制台开了防火墙,如果系统内部
firewall-cmd --zone=public --add-port=8080/tcp --permanent没执行,或者没有重启防火墙服务,依然会拒绝连接。 - 检查方法:SSH 登录后,运行
systemctl status firewalld查看状态。如果是 active,确保对应端口已添加。
- 轻量服务器默认镜像通常内置了
总结清单
| 端口 | 用途 | 是否必须 | 建议 |
|---|---|---|---|
| 22 | SSH 远程管理 | ✅ 必须 | 建议限制来源 IP,提高安全性 |
| 8080 (或自定义) | Java 应用主端口 | ✅ 必须 | 如果用了 Nginx 反向XX,可考虑仅内网访问 |
| 80 / 443 | Web 标准端口 | ⚠️ 推荐 | 配合 Nginx 使用,提升用户体验和 SEO |
| 其他 | Arthas, JMX 等 | ❌ 按需 | 仅限调试期间临时开放,用完即关 |
最后提醒:部署完成后,第一时间用 curl http://localhost:8080 测试服务器内部连通性,再用手机流量或另一个电脑浏览器测试网络访问。内外都通,才算真正部署成功。
云技术博客