只有服务器没有域名怎么部署多个项目宝塔建站没有域名,如何用一个公网IP搭建多?

在只有服务器公网 IP 而没有域名的情况下,通过宝塔面板(BT Panel)部署多个项目是完全可行的。核心思路是利用 Nginx/Apache 的反向X_X功能,通过不同的 端口号(Port) 来区分不同的网站或应用。

以下是详细的操作步骤和注意事项:


📌 核心原理

  • 默认情况:一个公网 IP + 80 端口 = 只能访问一个网站。
  • 多项目方案:使用不同端口访问不同项目。
    • 项目 A:http://你的IP:80
    • 项目 B:http://你的IP:8080
    • 项目 C:http://你的IP:3000

✅ 方法一:通过宝塔面板添加多个站点(推荐)

这是最标准、最易管理的方式。

步骤 1:创建第一个站点(主站)

  1. 登录宝塔面板 → 左侧菜单点击 【网站】 → 点击 【添加站点】
  2. 填写信息:
    • 域名:填你的 公网 IP 地址(例如 123.45.67.89)。
    • 根目录:选择项目文件夹(如 /www/wwwroot/project1)。
    • PHP版本:根据项目需求选择(如 PHP 7.4、Node.js 等)。
  3. 点击提交。
  4. 此时,你可以通过 http://你的IP 访问该项目。

⚠️ 注意:如果该 IP 已被其他服务占用(如宝塔默认页面),可能需要先删除默认站点或修改默认监听端口。


步骤 2:添加第二个站点(子项目)

  1. 再次点击 【添加站点】
  2. 填写信息:
    • 域名:依然填 公网 IP 地址123.45.67.89)。
    • 端口关键步骤! 不要留空或填 80,而是指定一个未被占用的端口,例如 808080813000 等。
    • 根目录:选择另一个项目文件夹(如 /www/wwwroot/project2)。
  3. 点击提交。

✅ 现在你可以通过以下方式访问:

  • 项目1:http://你的IP:80 (通常省略 :80)
  • 项目2:http://你的IP:8080

步骤 3:添加更多项目

重复上述步骤,为每个新项目分配唯一的端口号即可。


🔧 方法二:手动配置 Nginx 反向X_X(适用于非标准应用)

如果你的项目不是传统 Web 应用(如 Java Spring Boot、Python Flask、Go 服务等),它们可能运行在其他端口上,你需要让 Nginx 将请求转发到这些端口。

示例:假设有一个 Node.js 应用运行在本地 3000 端口

  1. 在宝塔中创建一个站点,域名仍为 IP,端口设为 8081
  2. 进入该站点的 配置文件(编辑 nginx.conf)。
  3. 修改 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;
    }
}
  1. 保存并重启 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.commyproject2.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,再通过宝塔绑定这些域名,实现更专业、安全的部署。