在没有域名的情况下,可以通过 端口区分 或 反向X_X路径区分 的方式,利用单一公网IP部署多个项目。以下是具体方案:
方案1:通过不同端口区分项目(最简单)
-
修改宝塔站点配置
- 为每个项目分配不同的端口(如
8001、8002)。 - 在宝塔面板创建站点时,填写IP地址和端口(如
http://1.2.3.4:8001)。 - 确保防火墙/安全组放行这些端口。
- 为每个项目分配不同的端口(如
-
访问方式
- 用户通过
http://公网IP:端口访问不同项目(如http://1.2.3.4:8001)。
- 用户通过
-
优缺点
- ✅ 简单直接,无需额外配置。
- ❌ 需用户记住端口,不便于传播;部分环境可能屏蔽非常用端口。
方案2:通过反向X_X路径区分(更友好)
使用Nginx反向X_X,通过URL路径区分项目(如 /project1、/project2):
-
在宝塔创建主站点
- 绑定IP(如
http://1.2.3.4),不填域名。
- 绑定IP(如
-
配置Nginx反向X_X
- 编辑站点配置文件,添加如下规则:
location /project1 { proxy_pass http://127.0.0.1:8001; # 转发到本地端口 proxy_set_header Host $host; } location /project2 { proxy_pass http://127.0.0.1:8002; proxy_set_header Host $host; }
- 编辑站点配置文件,添加如下规则:
-
访问方式
- 用户通过
http://1.2.3.4/project1和http://1.2.3.4/project2访问不同项目。
- 用户通过
-
优缺点
- ✅ URL更简洁,无需暴露端口。
- ❌ 需项目支持子路径(部分前端项目需配置
baseURL)。
方案3:使用Host头区分(需客户端配合)
通过HTTP请求的 Host 头区分项目(需客户端手动设置):
-
配置Nginx
server { listen 80; server_name _; # 捕获所有请求 if ($http_host = "project1") { proxy_pass http://127.0.0.1:8001; } if ($http_host = "project2") { proxy_pass http://127.0.0.1:8002; } } - 访问方式
- 用户需手动修改请求头(如使用Postman或浏览器插件设置
Host: project1)。 - 适用于测试环境,不适合生产。
- 用户需手动修改请求头(如使用Postman或浏览器插件设置
注意事项
- HTTPS支持
- 若无域名,无法申请SSL证书,只能使用HTTP或自签证书(浏览器会警告)。
- 端口限制
- 避免使用
80/443之外的端口,部分企业网络可能屏蔽。
- 避免使用
- 动态DNS
- 若IP会变,可考虑免费DDNS服务(如
noip.com)绑定一个子域名。
- 若IP会变,可考虑免费DDNS服务(如
推荐选择
- 临时测试/个人使用 → 方案1(不同端口)
- 长期使用且项目支持子路径 → 方案2(反向X_X路径)
- 若后期有域名,可直接在宝塔绑定域名并配置HTTPS。
云服务器