在只有服务器公网 IP 而没有域名的情况下,通过宝塔面板(BT Panel)部署多个项目是完全可行的。核心思路是利用 Nginx/Apache 的反向X_X功能,通过不同的 端口号(Port) 来区分不同的网站或应用。
以下是详细的操作步骤和注意事项:
📌 核心原理
- 默认情况:一个公网 IP + 80 端口 = 只能访问一个网站。
- 多项目方案:使用不同端口访问不同项目。
- 项目 A:
http://你的IP:80 - 项目 B:
http://你的IP:8080 - 项目 C:
http://你的IP:3000
- 项目 A:
✅ 方法一:通过宝塔面板添加多个站点(推荐)
这是最标准、最易管理的方式。
步骤 1:创建第一个站点(主站)
- 登录宝塔面板 → 左侧菜单点击 【网站】 → 点击 【添加站点】。
- 填写信息:
- 域名:填你的 公网 IP 地址(例如
123.45.67.89)。 - 根目录:选择项目文件夹(如
/www/wwwroot/project1)。 - PHP版本:根据项目需求选择(如 PHP 7.4、Node.js 等)。
- 域名:填你的 公网 IP 地址(例如
- 点击提交。
- 此时,你可以通过
http://你的IP访问该项目。
⚠️ 注意:如果该 IP 已被其他服务占用(如宝塔默认页面),可能需要先删除默认站点或修改默认监听端口。
步骤 2:添加第二个站点(子项目)
- 再次点击 【添加站点】。
- 填写信息:
- 域名:依然填 公网 IP 地址(
123.45.67.89)。 - 端口:关键步骤! 不要留空或填 80,而是指定一个未被占用的端口,例如
8080、8081、3000等。 - 根目录:选择另一个项目文件夹(如
/www/wwwroot/project2)。
- 域名:依然填 公网 IP 地址(
- 点击提交。
✅ 现在你可以通过以下方式访问:
- 项目1:
http://你的IP:80(通常省略 :80) - 项目2:
http://你的IP:8080
步骤 3:添加更多项目
重复上述步骤,为每个新项目分配唯一的端口号即可。
🔧 方法二:手动配置 Nginx 反向X_X(适用于非标准应用)
如果你的项目不是传统 Web 应用(如 Java Spring Boot、Python Flask、Go 服务等),它们可能运行在其他端口上,你需要让 Nginx 将请求转发到这些端口。
示例:假设有一个 Node.js 应用运行在本地 3000 端口
- 在宝塔中创建一个站点,域名仍为 IP,端口设为
8081。 - 进入该站点的 配置文件(编辑
nginx.conf)。 - 修改 location 块,添加反向X_X:
server {
listen 8081;
server_name 你的公网IP;
location / {
proxy_pass http://127.0.0.1:3000; # 转发到本地3000端口
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
- 保存并重启 Nginx。
🛡️ 重要注意事项
1. 安全组/防火墙放行端口
- 宝塔面板:确保你在宝塔“安全”选项中放行了所有使用的端口(如 80, 8080, 8081 等)。
- 云服务器厂商(阿里云/腾讯云/AWS等):必须在云控制台的 安全组(Security Group) 中放行这些 TCP 端口,否则外部无法访问!
2. 避免端口冲突
- 确保每个项目的端口不与其他服务冲突(如 MySQL 是 3306,Redis 是 6379,不要用这些端口做 Web 服务)。
- 常用备用端口:
8080,8081,8082,3000,5000,8000等。
3. HTTPS 问题(无域名时)
- 没有域名很难配置标准的 HTTPS,因为 SSL 证书通常需要域名验证。
- 如果你必须用 HTTPS,可以考虑:
- 使用自签名证书(浏览器会警告不安全)。
- 使用 Let’s Encrypt 的 IP 证书(部分支持,但不稳定)。
- 建议:仅在内网或测试环境使用 HTTP;生产环境强烈建议申请免费域名(如
.tk、.xyz或使用 Cloudflare Workers 做域名解析到 IP)。
4. 访问体验
- 用户访问时需要记住端口号,不太友好。
- 解决方案:未来可绑定免费域名,实现统一入口。
🌐 进阶:如何“看起来”像有多个域名?
虽然你没有域名,但你可以利用 Host 头欺骗(仅限内网或自己电脑测试):
在你的电脑 hosts 文件中添加:
123.45.67.89 myproject1.com
123.45.67.89 myproject2.com
然后在宝塔中设置两个站点,域名分别填 myproject1.com 和 myproject2.com,这样你就可以用“域名”方式访问,但实际还是指向同一个 IP 的不同端口。但这仅在你本地有效,其他人无法这样访问。
✅ 总结
| 项目 | 配置方式 | 访问地址 |
|---|---|---|
| 项目1 | 宝塔添加站点,域名=IP,端口=80 | http://你的IP |
| 项目2 | 宝塔添加站点,域名=IP,端口=8080 | http://你的IP:8080 |
| 项目3 | 宝塔添加站点,域名=IP,端口=8081 | http://你的IP:8081 |
💡 最终建议:虽然可以用 IP+端口 搭建多项目,但为了长期维护和安全性,强烈建议注册一个便宜的域名(几元到几十元/年),然后将多个二级域名(如
a.example.com,b.example.com)解析到你的服务器 IP,再通过宝塔绑定这些域名,实现更专业、安全的部署。
PHPWP博客