在宝塔面板中,一个域名是不能直接绑定两个网站的,但你可以通过以下几种方式实现“一个域名对应两个不同的网站内容”,具体取决于你的需求和使用场景:
✅ 场景一:子目录绑定不同网站(推荐)
适用情况:
你想让 example.com/site1 和 example.com/site2 分别展示两个不同的网站。
实现步骤:
-
创建主网站
- 在宝塔面板中添加站点,绑定域名
example.com - 网站根目录为
/www/wwwroot/example.com
- 在宝塔面板中添加站点,绑定域名
-
创建两个子目录
- 创建目录如:
/www/wwwroot/example.com/site1 /www/wwwroot/example.com/site2
- 创建目录如:
-
上传各自网站程序到对应的子目录
-
配置伪静态(可选)
- 如果需要更好的 SEO 或 URL 重写,可以配置伪静态规则来处理子目录访问。
-
设置权限和运行目录
- 进入网站设置 → 配置文件 → 找到
location段落 -
添加类似如下 Nginx 配置(如果默认不支持子目录执行 PHP):
location /site1/ { root /www/wwwroot/example.com/site1; index index.php index.html; if (!-e $request_filename) { rewrite ^/site1/(.*)$ /site1/index.php?s=/$1 last; } } location ~ ^/site1/.+.php$ { root /www/wwwroot/example.com/site1; fastcgi_pass unix:/tmp/php-cgi-74.sock; include fastcgi.conf; include pathinfo.conf; } - 同理配置
/site2/
- 进入网站设置 → 配置文件 → 找到
✅ 场景二:使用端口区分两个网站
适用情况:
你希望通过 example.com:8080 和 example.com:8081 访问两个网站。
实现步骤:
-
创建两个网站:
- 第一个网站绑定
example.com:80 - 第二个网站绑定
example.com:8080
- 第一个网站绑定
-
注意:
- 用户访问时需要加端口号(例如:
http://example.com:8080) - 可以配合反向隐藏端口号
- 用户访问时需要加端口号(例如:
✅ 场景三:根据路径反向另一个网站(高级用法)
适用情况:
你希望某些路径转发给本地或远程的另一个服务(如 Node.js、Django、WordPress 等)
示例:
将 example.com/api 转发给本地的另一个服务(比如运行在 localhost:3000 的 Node 应用)
配置方法:
- 在宝塔中进入该网站的【反向】选项卡
- 添加反向规则:
- 名称:
api-proxy - 目标URL:
http://127.0.0.1:3000 - 发送域名:
$host - 开启后会在 Nginx 中生成如下规则:
location /api { proxy_pass http://127.0.0.1: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; }
- 名称:
✅ 场景四:使用多个域名 + 泛解析(变通方式)
如果你有多个域名,或者可以使用子域名,也可以这样做:
- 主域名:
example.com→ 网站A - 子域名:
b.example.com→ 网站B
这种方式在宝塔中非常简单,只需添加两个站点即可。
总结对比表:
| 方式 | 是否可行 | 优点 | 缺点 |
|---|---|---|---|
| 子目录绑定 | ✅ 是 | 不需要额外域名 | 需要配置伪静态、权限等 |
| 使用端口区分 | ✅ 是 | 简单快速 | 用户需输入端口号 |
| 反向 | ✅ 是 | 灵活强大 | 需要懂一点 Nginx 配置 |
| 多域名/子域名 | ✅ 是 | 宝塔原生支持 | 需要有多个域名 |
如果你能提供更详细的用途(比如你要放两个 WordPress?还是前后端分离?),我可以给你更具体的方案。欢迎继续提问!
CLOUD技术博