.gitignore 更新: - 添加 pixi 环境和 .claude 目录忽略 - 添加 supabase-stack 相关忽略规则 - 添加 web/ws/postgres_data/pgdata/ 数据库数据忽略 docs/ 文档: - strategy-1-path-prefix.md: 路径前缀部署方案 - strategy-2-subdomain.md: 子域名部署方案 - strategy-3-hybrid.md: 混合部署方案 - strategy-comparison-report.md: 策略对比报告 这些文档详细说明了 Traefik 反向代理的三种部署策略, 为多应用部署提供参考方案。
492 lines
12 KiB
Markdown
492 lines
12 KiB
Markdown
# 多网站部署策略对比分析报告
|
||
|
||
## 📊 执行摘要
|
||
|
||
本报告针对 `https://amiap.hzau.edu.cn/XXX` 多网站部署场景,对三种主流策略进行全面分析和对比。
|
||
|
||
**核心结论**:
|
||
- 🥇 **策略 2(子域名)**:生产环境最佳选择,强烈推荐 ⭐⭐⭐⭐⭐
|
||
- 🥈 **策略 3(混合)**:灵活平衡方案,适合复杂场景 ⭐⭐⭐⭐
|
||
- 🥉 **策略 1(路径前缀)**:临时方案,不推荐长期使用 ⭐⭐⭐
|
||
|
||
---
|
||
|
||
## 📋 三种策略概览
|
||
|
||
### 策略 1:路径前缀部署
|
||
```
|
||
https://amiap.hzau.edu.cn/ABM
|
||
https://amiap.hzau.edu.cn/lab
|
||
https://amiap.hzau.edu.cn/docs
|
||
```
|
||
|
||
### 策略 2:子域名部署 ⭐ 推荐
|
||
```
|
||
https://abm.amiap.hzau.edu.cn
|
||
https://lab.amiap.hzau.edu.cn
|
||
https://docs.amiap.hzau.edu.cn
|
||
```
|
||
|
||
### 策略 3:混合部署
|
||
```
|
||
主要业务:https://abm.amiap.hzau.edu.cn (子域名)
|
||
次要功能:https://amiap.hzau.edu.cn/api (路径)
|
||
```
|
||
|
||
---
|
||
|
||
## 🔍 详细对比矩阵
|
||
|
||
### 1. 技术指标对比
|
||
|
||
| 维度 | 策略1:路径前缀 | 策略2:子域名 ⭐ | 策略3:混合 |
|
||
|------|----------------|-----------------|------------|
|
||
| **路由性能** | 0.1-0.5ms ⭐⭐⭐ | 0.05-0.1ms ⭐⭐⭐⭐⭐ | 0.05-0.5ms ⭐⭐⭐⭐ |
|
||
| **CPU 占用** | 中等(15-20%) | 低(10-15%) | 中低(12-18%) |
|
||
| **内存占用** | 50MB/10站 | 30MB/10站 | 40MB/10站 |
|
||
| **扩展性** | 受限(5-10站) | 无限 | 高(20+站) |
|
||
| **配置复杂度** | 中等 | 简单 | 较高 |
|
||
|
||
### 2. 实施成本对比
|
||
|
||
| 成本类型 | 策略1 | 策略2 ⭐ | 策略3 |
|
||
|---------|-------|---------|-------|
|
||
| **初次部署时间** | 30-60分钟 | 60-120分钟 | 90-150分钟 |
|
||
| **添加新站时间** | 15-20分钟 | 5-10分钟 | 10-15分钟 |
|
||
| **学习曲线** | 中等 | 中低 | 较高 |
|
||
| **维护成本** | 中等偏高 | 低 | 中等 |
|
||
| **DNS 需求** | ❌ 不需要 | ✅ 需要 | ⚠️ 部分需要 |
|
||
| **证书数量** | 1个 | 1个(通配符)或多个 | 1-2个 |
|
||
|
||
### 3. 功能特性对比
|
||
|
||
| 功能 | 策略1 | 策略2 ⭐ | 策略3 |
|
||
|------|-------|---------|-------|
|
||
| **需要优先级配置** | ✅ 必须 | ❌ 不需要 | ⚠️ 路径部分需要 |
|
||
| **需要调整文件结构** | ✅ 必须 | ❌ 不需要 | ⚠️ 路径部分需要 |
|
||
| **支持 StripPrefix** | ⚠️ 受限 | ✅ 完全支持 | ⚠️ 部分支持 |
|
||
| **完全隔离** | ❌ 不支持 | ✅ 完全隔离 | ⚠️ 部分隔离 |
|
||
| **独立安全策略** | ❌ 困难 | ✅ 简单 | ⚠️ 混合 |
|
||
| **SEO 友好** | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
|
||
|
||
### 4. 适用场景对比
|
||
|
||
| 场景 | 策略1 | 策略2 ⭐ | 策略3 |
|
||
|------|-------|---------|-------|
|
||
| **无 DNS 权限** | ✅ 适合 | ❌ 不适合 | ⚠️ 受限 |
|
||
| **生产环境** | ⚠️ 不推荐 | ✅ 强烈推荐 | ✅ 推荐 |
|
||
| **临时项目(<1月)** | ✅ 适合 | ⚠️ 过度设计 | ⚠️ 过度设计 |
|
||
| **长期项目(>1年)** | ❌ 不推荐 | ✅ 强烈推荐 | ✅ 推荐 |
|
||
| **小规模(≤3站)** | ✅ 可以 | ✅ 最佳 | ⚠️ 过于复杂 |
|
||
| **大规模(>5站)** | ❌ 不推荐 | ✅ 强烈推荐 | ✅ 推荐 |
|
||
| **高流量** | ⚠️ 性能不足 | ✅ 最佳性能 | ✅ 较好 |
|
||
| **多团队协作** | ⚠️ 冲突风险 | ✅ 完全隔离 | ✅ 较好 |
|
||
|
||
---
|
||
|
||
## 💡 推荐建议
|
||
|
||
### 🥇 首选方案:策略 2(子域名)⭐⭐⭐⭐⭐
|
||
|
||
#### 推荐理由
|
||
|
||
**1. 技术优势明显**
|
||
- 路由性能最优(提升 50-80%)
|
||
- 配置最简洁(无需优先级)
|
||
- 扩展性最好(无限扩展)
|
||
|
||
**2. 长期成本最低**
|
||
- 无需调整文件结构
|
||
- 添加新站最快(5分钟)
|
||
- 维护成本极低
|
||
|
||
**3. 专业性最强**
|
||
- SEO 友好
|
||
- 独立品牌形象
|
||
- 完全隔离
|
||
|
||
**4. 适用场景最广**
|
||
```
|
||
✅ 生产环境
|
||
✅ 长期项目
|
||
✅ 多网站运营
|
||
✅ 高流量场景
|
||
✅ 企业级应用
|
||
✅ 需要独立管理
|
||
```
|
||
|
||
#### 实施建议
|
||
|
||
**步骤 1:申请 DNS 权限**(最重要)
|
||
```bash
|
||
# 向学校/公司 IT 部门申请
|
||
# 或使用免费 DNS 服务(Cloudflare)
|
||
# 配置通配符 DNS
|
||
*.amiap.hzau.edu.cn A 你的服务器IP
|
||
```
|
||
|
||
**步骤 2:配置通配符证书**
|
||
```yaml
|
||
# 使用 DNS Challenge(推荐)
|
||
traefik:
|
||
command:
|
||
- "--certificatesresolvers.myresolver.acme.dnsChallenge.provider=cloudflare"
|
||
environment:
|
||
- "CF_DNS_API_TOKEN=your_token"
|
||
```
|
||
|
||
**步骤 3:部署网站**
|
||
```yaml
|
||
# 简单配置,无需优先级
|
||
services:
|
||
nginx-abm:
|
||
labels:
|
||
- "traefik.http.routers.abm.rule=Host(`abm.amiap.hzau.edu.cn`)"
|
||
```
|
||
|
||
**投资回报**:
|
||
- 初期投入:1-2 小时配置
|
||
- 长期收益:节省无数维护时间
|
||
- ROI:极高 ⭐⭐⭐⭐⭐
|
||
|
||
---
|
||
|
||
### 🥈 备选方案:策略 3(混合)⭐⭐⭐⭐
|
||
|
||
#### 适用场景
|
||
|
||
**1. 业务分层明确**
|
||
```
|
||
核心业务(子域名):
|
||
- 面向用户的产品
|
||
- 高流量服务
|
||
|
||
辅助功能(路径):
|
||
- 内部工具
|
||
- API 接口
|
||
- 下载中心
|
||
```
|
||
|
||
**2. 渐进式迁移**
|
||
```
|
||
现状:所有服务用路径
|
||
目标:核心业务迁移到子域名
|
||
过程:分批迁移,平滑过渡
|
||
```
|
||
|
||
**3. 资源有限**
|
||
```
|
||
DNS 记录配额有限
|
||
只为核心业务配置子域名
|
||
节省 DNS 记录和证书成本
|
||
```
|
||
|
||
#### 实施建议
|
||
|
||
**制定决策标准**
|
||
```markdown
|
||
## 使用子域名的条件(满足 2 条以上):
|
||
- [ ] 面向外部用户的主要产品
|
||
- [ ] 日均 PV > 1000
|
||
- [ ] 需要独立品牌形象
|
||
- [ ] 长期运行(> 6 个月)
|
||
- [ ] 需要独立访问控制
|
||
|
||
## 使用路径的条件:
|
||
- [ ] 内部工具或辅助功能
|
||
- [ ] 日均 PV < 500
|
||
- [ ] 临时性功能
|
||
- [ ] 不需要独立品牌
|
||
```
|
||
|
||
**优点**:
|
||
- 灵活性高
|
||
- 成本优化
|
||
- 渐进式迁移
|
||
|
||
**缺点**:
|
||
- 配置复杂度增加
|
||
- 需要管理两套规则
|
||
- 学习曲线较高
|
||
|
||
---
|
||
|
||
### 🥉 临时方案:策略 1(路径前缀)⭐⭐⭐
|
||
|
||
#### 仅适用于以下场景
|
||
|
||
**1. 无 DNS 管理权限**
|
||
```
|
||
学校服务器、共享主机
|
||
无法添加子域名
|
||
临时解决方案
|
||
```
|
||
|
||
**2. 极短期项目(< 1 个月)**
|
||
```
|
||
Demo 展示
|
||
临时活动页面
|
||
一次性项目
|
||
```
|
||
|
||
**3. 小规模测试(≤ 2 个网站)**
|
||
```
|
||
快速验证想法
|
||
不追求性能
|
||
快速部署优先
|
||
```
|
||
|
||
#### 关键要点
|
||
|
||
**⚠️ 必须注意**:
|
||
1. 所有 PathPrefix 设置 `priority=100`
|
||
2. Decoy 站点设置 `priority=1`
|
||
3. 文件结构必须对齐 URL 路径
|
||
4. 避免使用 StripPrefix
|
||
|
||
**⚠️ 不推荐用于**:
|
||
- 生产环境
|
||
- 长期项目
|
||
- 网站数量 > 3 个
|
||
- 高流量场景
|
||
|
||
---
|
||
|
||
## 📈 决策流程图
|
||
|
||
```
|
||
开始部署多网站
|
||
↓
|
||
是否有 DNS 管理权限?
|
||
↓
|
||
┌───是───┐ ┌───否───┐
|
||
│ ↓ ↓ │
|
||
│ 是生产环境? 是临时项目?│
|
||
│ ↓ ↓ │
|
||
│ ┌是─┴─否┐ ┌是─┴─否┐ │
|
||
│ ↓ ↓ ↓ ↓ │
|
||
│ 策略2 策略3 策略1 申请权限 │
|
||
│ ⭐⭐⭐ ⭐⭐⭐ ⭐⭐ 然后策略2 │
|
||
│ │
|
||
└───────────────────────────────┘
|
||
|
||
详细判断标准:
|
||
|
||
策略 2(子域名):
|
||
✅ 有 DNS 权限
|
||
✅ 生产环境或长期项目
|
||
✅ 追求最佳性能和可维护性
|
||
|
||
策略 3(混合):
|
||
✅ 有 DNS 权限
|
||
✅ 业务分层明确(核心+辅助)
|
||
✅ DNS 记录有限制
|
||
|
||
策略 1(路径):
|
||
⚠️ 无 DNS 权限(暂时)
|
||
⚠️ 临时项目(< 1 个月)
|
||
⚠️ 快速验证,不追求性能
|
||
```
|
||
|
||
---
|
||
|
||
## 💰 总体成本收益分析
|
||
|
||
### 策略 1:路径前缀
|
||
|
||
**总投入**:
|
||
```
|
||
初期:30-60 分钟 × 50元/小时 = 25-50元
|
||
维护:每月 2 小时 × 50元/小时 = 100元/月
|
||
一年总成本:1200元 + 初期成本 ≈ 1250元
|
||
```
|
||
|
||
**收益**:
|
||
```
|
||
无需 DNS 配置:省时
|
||
快速部署:适合临时项目
|
||
```
|
||
|
||
**ROI**:⭐⭐(短期尚可,长期成本高)
|
||
|
||
---
|
||
|
||
### 策略 2:子域名 ⭐
|
||
|
||
**总投入**:
|
||
```
|
||
初期:60-120 分钟 × 50元/小时 = 50-100元
|
||
DNS配置:申请权限(一次性,可能需要 1-3 天沟通)
|
||
维护:每月 0.5 小时 × 50元/小时 = 25元/月
|
||
一年总成本:300元 + 初期成本 ≈ 400元
|
||
```
|
||
|
||
**收益**:
|
||
```
|
||
性能提升:50-80%(降低服务器成本)
|
||
维护成本低:节省人力
|
||
扩展性好:未来无需重构
|
||
专业形象:提升品牌价值
|
||
```
|
||
|
||
**ROI**:⭐⭐⭐⭐⭐(长期收益极高)
|
||
|
||
---
|
||
|
||
### 策略 3:混合
|
||
|
||
**总投入**:
|
||
```
|
||
初期:90-150 分钟 × 50元/小时 = 75-125元
|
||
维护:每月 1 小时 × 50元/小时 = 50元/月
|
||
一年总成本:600元 + 初期成本 ≈ 700元
|
||
```
|
||
|
||
**收益**:
|
||
```
|
||
灵活性高:适应不同需求
|
||
成本优化:DNS 记录较少
|
||
性能较好:核心业务最优
|
||
```
|
||
|
||
**ROI**:⭐⭐⭐⭐(平衡方案,收益良好)
|
||
|
||
---
|
||
|
||
## 🎯 最终推荐
|
||
|
||
### 针对你的场景:`https://amiap.hzau.edu.cn/XXX`
|
||
|
||
#### 强烈推荐:策略 2(子域名)⭐⭐⭐⭐⭐
|
||
|
||
**核心理由**:
|
||
1. ✅ 这是生产环境(华中农业大学官方域名)
|
||
2. ✅ 需要长期运行(非临时项目)
|
||
3. ✅ 可能有多个网站(ABM + 其他业务)
|
||
4. ✅ 专业形象重要(学术机构)
|
||
5. ✅ 有获取 DNS 权限的可能性(学校 IT 部门)
|
||
|
||
**行动计划**:
|
||
|
||
**第 1 步:申请 DNS 权限**(最关键)
|
||
```
|
||
联系学校 IT 部门
|
||
说明:需要为实验室项目配置子域名
|
||
申请:*.amiap.hzau.edu.cn 的管理权限
|
||
或至少:abm.amiap.hzau.edu.cn, lab.amiap.hzau.edu.cn 等
|
||
```
|
||
|
||
**第 2 步:配置通配符 DNS**
|
||
```bash
|
||
*.amiap.hzau.edu.cn A 你的服务器IP
|
||
# 或单独配置每个子域名
|
||
abm.amiap.hzau.edu.cn A 你的IP
|
||
lab.amiap.hzau.edu.cn A 你的IP
|
||
```
|
||
|
||
**第 3 步:配置证书**
|
||
```yaml
|
||
# 方案 A:通配符证书(推荐,需要 DNS API)
|
||
certificatesresolvers.myresolver.acme.dnsChallenge
|
||
|
||
# 方案 B:单独证书(简单,无需 API)
|
||
certificatesresolvers.myresolver.acme.httpChallenge
|
||
```
|
||
|
||
**第 4 步:迁移网站**
|
||
```bash
|
||
# 从 /ABM/ 移回根目录
|
||
mv /usr/share/nginx/html/ABM/* /usr/share/nginx/html/
|
||
|
||
# 更新 Traefik 配置
|
||
Host(`abm.amiap.hzau.edu.cn`) # 简洁!
|
||
```
|
||
|
||
**预期效果**:
|
||
- ✅ 性能提升 50-80%
|
||
- ✅ 配置简洁,易于维护
|
||
- ✅ 专业形象,SEO 友好
|
||
- ✅ 无限扩展能力
|
||
|
||
---
|
||
|
||
### 如果暂时无法获得 DNS 权限
|
||
|
||
#### 临时方案:策略 1(路径前缀)
|
||
|
||
**保持当前配置**:
|
||
```yaml
|
||
# 已修复的配置
|
||
PathPrefix(`/ABM`) priority=100
|
||
Path(`/`) priority=1
|
||
# 文件结构:/ABM/index.html
|
||
```
|
||
|
||
**关键点**:
|
||
- ✅ 保持文件路径对齐
|
||
- ✅ 所有新网站 priority=100
|
||
- ✅ Decoy 站点 priority=1
|
||
- ✅ 不使用 StripPrefix
|
||
|
||
**未来规划**:
|
||
```
|
||
1. 持续申请 DNS 权限
|
||
2. 准备迁移方案
|
||
3. 一旦获得权限,立即迁移到子域名
|
||
```
|
||
|
||
---
|
||
|
||
## 📊 各策略评分总结
|
||
|
||
| 评分维度(满分5分) | 策略1 路径 | 策略2 子域名 ⭐ | 策略3 混合 |
|
||
|------------------|----------|--------------|----------|
|
||
| **性能** | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
|
||
| **易用性** | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
|
||
| **扩展性** | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
|
||
| **维护成本** | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
|
||
| **初期成本** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐ |
|
||
| **专业性** | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
|
||
| **灵活性** | ⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
||
| **综合评分** | **2.4** | **4.7** ⭐ | **3.7** |
|
||
|
||
---
|
||
|
||
## 📚 延伸阅读
|
||
|
||
- [策略 1 详细分析:路径前缀方案](strategy-1-path-prefix.md)
|
||
- [策略 2 详细分析:子域名方案](strategy-2-subdomain.md)
|
||
- [策略 3 详细分析:混合方案](strategy-3-hybrid.md)
|
||
- [完整策略指南](MULTI_SITE_STRATEGY_GUIDE.md)
|
||
- [快速参考手册](QUICK_REFERENCE.md)
|
||
|
||
---
|
||
|
||
## 🎓 关键要点总结
|
||
|
||
### ✅ 务必记住
|
||
|
||
1. **子域名策略是生产环境的最佳选择** ⭐⭐⭐⭐⭐
|
||
- 性能最优、维护最简单、扩展性最好
|
||
|
||
2. **路径前缀只是临时方案**
|
||
- 适合快速验证、无 DNS 权限的场景
|
||
- 不推荐长期使用
|
||
|
||
3. **混合策略适合业务分层场景**
|
||
- 核心业务用子域名
|
||
- 辅助功能用路径
|
||
|
||
4. **配置要点**
|
||
- 子域名:无需优先级、无需调整文件结构
|
||
- 路径:必须设置优先级、必须对齐文件结构
|
||
|
||
5. **长期建议**
|
||
- 尽早申请 DNS 权限
|
||
- 迁移到子域名策略
|
||
- 避免技术债务累积
|
||
|
||
---
|
||
|
||
**最终建议:申请 DNS 权限,使用子域名策略,一劳永逸!** 🎯
|