当前位置:首页 > CMS教程 > 正文

阿里云服务器多站点

阿里云服务器支持多站点管理,可通过不同端口/域名区分,灵活分配资源,实现高效

基础架构设计原则

要素 说明
共享资源 CPU/内存/带宽由单台ECS统一承载
隔离方式 基于域名区分(推荐)>基于端口区分>基于目录路径区分
协议支持 HTTP/HTTPS双协议兼容,建议启用TLS加密
扩展性 可通过负载均衡SLB横向扩展,单个站点可独立升降配

实施步骤详解

前期准备

必备条件清单

  • 已完成阿里云账号实名认证
  • 至少1个已备案域名(需完成ICP备案)
  • ECS实例(推荐选择通用型g系列,配置≥2核4G)
  • 操作系统建议CentOS 7.9+/Ubuntu 20.04+
  • 已安装宝塔面板(可选)或直接使用原生环境

域名解析配置

关键操作示例(假设主域名example.com):
| 子域名 | 记录类型 | 记录值 | 作用说明 |
|————-|———-|——————|—————————|
| www.a.com | A记录 | ECS公网IP | 站点A入口 |
| www.b.com | A记录 | ECS公网IP | 站点B入口 |
| .c.com | CNAME | yourdomain.cn | 通配符泛解析(特殊场景) |

️ 注意:所有域名需指向同一台ECS的公网IP

Web服务器配置(以Nginx为例)

核心配置文件路径/usr/local/nginx/conf/vhost/.conf

标准虚拟主机模板

阿里云服务器多站点  第1张

server {
    listen 80;
    server_name www.a.com; # 对应第一个站点
    root /www/website_a;   # 站点根目录
    index index.html;
    location / {
        try_files $uri $uri/ =404;
    }
}
server {
    listen 80;
    server_name www.b.com; # 第二个站点
    root /www/website_b;
    index index.php;       # PHP项目示例
    location ~ .php$ {
        fastcgi_pass unix:/dev/shm/php-fpm.sock;
    }
}

站点目录权限管理

典型目录结构

/www/
├── website_a/      # 站点A代码
│   ├── public/     # 公开文件
│   └── .env        # 环境变量
└── website_b/      # 站点B代码
    ├── assets/     # 静态资源
    └── config/     # 配置文件

权限设置命令

chown -R www:www /www/website_a
chmod -R 755 /www/website_a

HTTPS证书部署

推荐方案对比
| 方案 | 优点 | 缺点 | 适用场景 |
|—————|———————–|—————————|————————|
| Let’s Encrypt | 免费自动续期 | 90天有效期 | 开发/测试环境 |
| DigiCert | 1年有效期+商业背书 | 需付费 | 生产环境 |
| Alibaba Cloud| 集成OSS对象存储加速 | 依赖阿里云生态 | 全栈上云企业 |

Nginx配置片段

server {
    listen 443 ssl http2;
    server_name www.a.com;
    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    # ...其他配置...
}

运维管理要点

性能监控指标

指标 健康阈值 异常处理建议
CPU使用率 <70% 优化代码/升级配置
内存占用 <80% 增加交换分区/调整进程数
磁盘IOPS <500次/秒 迁移高频读写数据至ESSD云盘
QPS 根据业务需求 启用CDN加速/数据库读写分离

日志分析策略

关键日志文件

  • /var/log/nginx/access.log → 访问量统计
  • /var/log/nginx/error.log → 错误排查
  • /var/log/php-fpm/error.log → PHP错误追踪

常用分析命令

# 查看最近1小时TOP10请求URI
tail -n 1000 access.log | grep -Eo 'GET|POST [^?]+' | sort | uniq -c | sort -nr | head -n10
# 统计各站点流量占比
awk '{print $7}' access.log | grep -E 'www.a.com|www.b.com' | sort | uniq -c | sort -nr

常见问题与解答

Q1: 不同站点出现互相跳转怎么办?

原因分析:Nginx配置中的root指令顺序错误导致优先级混乱。
解决方案

  1. 确保每个server块都有明确的server_name声明
  2. 将默认站点放在最后(无server_nameserver块)
  3. 检查是否存在重复的location匹配规则
  4. 执行nginx -t验证配置文件语法正确性

Q2: HTTPS证书总是提示过期如何解决?

排查步骤

  1. 确认系统时间同步(ntpd服务正常运行)
  2. 检查证书文件权限(应为644)
  3. 验证证书链完整性:openssl x509 -in fullchain.pem -noout -text
  4. 若使用Let’s Encrypt,执行更新命令:certbot renew --force-renewal
  5. 清除浏览器缓存后重试访问

Q3: 如何限制单个站点的资源使用?

推荐方案

  1. CPU限制:通过cpulimit命令或systemd服务单元文件设置
    [Service]
    CPUQuota=50%  # 限制最大使用率为50%
  2. 内存限制:使用ulimit命令或容器化部署(Docker)
  3. 带宽控制:通过TC(Traffic Control)工具实现QoS限速
  4. 进程数限制:在Nginx配置中添加worker_processes auto;并配合PM2进程管理器

Q4: 如何快速切换测试环境和生产环境?

最佳实践

  1. 环境隔离:使用不同的文档根目录(如/www/test//www/prod/
  2. 配置版本控制:将Nginx配置文件纳入Git仓库管理
  3. 快速切换脚本:编写shell脚本实现以下功能:
    • 备份当前生产环境配置
    • 替换为测试环境配置
    • 重启Nginx服务
    • 执行数据库迁移(如有需要)
  4. DNS切换方案:通过修改本地hosts文件或使用Cloudflare的Develop
0