在腾讯云轻量应用服务器(Lighthouse)上部署 Java 项目时,需要开放的端口主要取决于你的业务架构、访问方式以及是否使用数据库。
以下是不同场景下的端口开放指南:
1. 核心业务端口(必须开放)
这是用户或前端系统直接访问你 Java 应用的入口。
- Java 应用运行端口:
- 默认通常是
8080(Spring Boot 默认)。 - 如果你修改了配置(如
server.port=80),则需开放该自定义端口。 - 操作:在腾讯云控制台“安全组”中,放行 TCP 协议的该端口。
- 默认通常是
- Nginx/反向X_X端口(推荐):
- 如果你的架构是
客户端 -> Nginx -> Java 应用,通常需要在 Nginx 层开放标准 Web 端口:- 80 (HTTP)
- 443 (HTTPS,如果配置了 SSL 证书)
- 注意:此时 Java 应用端口(如 8080)可以仅对本地(127.0.0.1)或内网 IP 开放,不建议直接暴露在公网,以提高安全性。
- 如果你的架构是
2. 运维与管理端口(按需开放)
这些端口用于你登录服务器进行维护,严禁直接对 0.0.0.0 (所有 IP) 开放,建议限制为特定管理 IP 或暂时开启。
- SSH 远程连接:
- 端口:22
- 用途:通过终端(Xshell, PuTTY, Terminal)登录服务器。
- 建议:默认腾讯云已开放,但为了安全,建议在安全组中限制源 IP 为你自己的办公 IP,而不是
0.0.0.0/0。
- JDBC/数据库连接端口(如果数据库在同一台服务器):
- MySQL: 3306
- PostgreSQL: 5432
- Redis: 6379
- MongoDB: 27017
- ⚠️ 高危警告:除非你有极强的安全策略(如白名单 IP + 强密码 + 加密传输),否则绝对不要将数据库端口直接暴露在公网上。建议将数据库迁移到腾讯云的云数据库(RDS)服务,或者仅允许应用所在的内网 IP 访问。
3. 特殊场景端口
- Docker 相关:如果你使用 Docker 部署,且映射了非标准端口(例如
-p 8080:80),只需开放宿主机映射的端口即可(见第 1 点)。 - 监控与日志:如 Prometheus、Grafana 等监控面板,若需从外部浏览器访问,需开放对应端口(如 9090, 3000),同样建议限制来源 IP。
✅ 最佳实践配置示例
假设你的架构是:公网用户 -> Nginx (80/443) -> Spring Boot (8080),且数据库独立部署。
| 端口 | 协议 | 来源 IP | 说明 |
|---|---|---|---|
| 22 | TCP | 你的个人 IP | SSH 登录,仅限自己,防止暴力破解 |
| 80 | TCP | 0.0.0.0/0 | HTTP 访问入口 |
| 443 | TCP | 0.0.0.0/0 | HTTPS 访问入口 |
| 8080 | TCP | 127.0.0.1 | Java 内部通信,不对外开放 |
| 3306 | TCP | 0.0.0.0/0 | 禁止开放 (数据库应独立或使用内网访问) |
🛡️ 安全建议
- 最小化原则:只开放必要的端口,其他一律关闭。
- 使用安全组:利用腾讯云轻量服务器的“安全组”功能进行流量控制,而不是依赖 Linux 内部的
iptables或firewalld(虽然两者都有效,但安全组更直观且由云平台管理)。 - 避免裸奔:尽量不要让 Java 进程直接监听 8080 并暴露给公网。使用 Nginx 作为反向X_X是行业标准做法,既能隐藏后端端口,又能处理静态资源、SSL 卸载和负载均衡。
- 定期审计:定期检查安全组规则,移除不再使用的端口。
总结:最基础的配置是开放 22(运维)、80/443(Web 服务)以及你的 Java 应用端口(如果没配 Nginx)。请务必根据实际架构调整,优先保护数据库端口。
云小栈