使用轻量级云服务器如何部署多个不同的网站?

在轻量级云服务器(如阿里云ECS、腾讯云CVM、华为云Cloud Server等)上部署多个不同网站,核心思路是“一个IP,多域名,通过Web服务器区分”。这主要依赖于 Web 服务器(Nginx/Apache)的虚拟主机(Virtual Host)或Server Block功能。

以下是基于主流 Linux 发行版(以 CentOS/Ubuntu 为例)和 Nginx 的详细实操指南。Nginx 因高性能和低资源占用,是轻量级服务器的首选。


一、 前期准备

  1. 域名解析:

    • 确保你拥有的多个域名(如 a.com, b.com)都已正确解析到该轻量级服务器的公网 IP。
    • 每个域名需在工信部完成 ICP 备案(国内云厂商强制要求)。
  2. 安装环境:

    • 操作系统:CentOS 7+/8+ 或 Ubuntu 20.04+/22.04+
    • Web 服务器:Nginx
    • 后端语言:根据网站需求安装 PHP、Node.js、Python 等。
    • 数据库:MySQL/MariaDB/PostgreSQL(若需要动态内容)。
  3. 目录结构规划:

    /var/www/
    ├── a.com/          # a.com 的网站文件
    │   └── public_html/
    ├── b.com/          # b.com 的网站文件
    │   └── public_html/
    └── c.net/          # c.net 的网站文件
       └── public_html/

二、 核心配置:Nginx 虚拟主机

1. 创建网站目录

为每个网站创建独立的目录和文件:

sudo mkdir -p /var/www/a.com/public_html
sudo mkdir -p /var/www/b.com/public_html

# 创建测试页
echo "<h1>Welcome to A.com</h1>" | sudo tee /var/www/a.com/public_html/index.html
echo "<h1>Welcome to B.com</h1>" | sudo tee /var/www/b.com/public_html/index.html

# 设置权限(重要!避免权限问题)
sudo chown -R www-data:www-data /var/www/  # Ubuntu 使用 www-data;CentOS 使用 nginx 或 apache
sudo chmod -R 755 /var/www/

2. 创建 Nginx 配置文件

在 /etc/nginx/conf.d/ 目录下为每个网站创建独立的配置文件。

文件:/etc/nginx/conf.d/a.com.conf

server {
    listen 80;
    server_name a.com www.a.com;

    root /var/www/a.com/public_html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }

    # 可选:重定向 HTTP 到 HTTPS(需先申请 SSL 证书)
    # return 301 https://$server_name$request_uri;
}

文件:/etc/nginx/conf.d/b.com.conf

server {
    listen 80;
    server_name b.com www.b.com;

    root /var/www/b.com/public_html;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ =404;
    }
}

关键点:Nginx 会根据 server_name 匹配请求头中的 Host 字段,从而将流量分发到对应的 root 目录。这是实现多站点隔离的核心。

3. 测试并重启 Nginx

# 检查配置语法是否正确
sudo nginx -t

# 如果显示 "syntax is ok" 和 "test is successful",则重启服务
sudo systemctl restart nginx

此时,访问 http://a.com 和 http://b.com 应分别显示不同的内容。


三、 进阶:启用 HTTPS(SSL 证书)

现代网站必须支持 HTTPS。推荐使用 Let’s Encrypt 免费证书,配合 certbot 工具自动管理。

1. 安装 Certbot

  • Ubuntu: sudo apt install certbot python3-certbot-nginx
  • CentOS: sudo yum install epel-release && sudo yum install certbot python3-certbot-nginx

2. 为每个域名申请证书

# 为 a.com 申请并自动配置 Nginx
sudo certbot --nginx -d a.com -d www.a.com

# 为 b.com 申请并自动配置 Nginx
sudo certbot --nginx -d b.com -d www.b.com

注意:Certbot 会自动修改你的 Nginx 配置文件,添加 SSL 相关指令和重定向规则。请勿手动编辑这些由 Certbot 生成的部分,否则可能导致证书更新失败。

3. 自动续期

Certbot 通常会自动设置 cron job 进行续期。可手动测试:

sudo certbot renew --dry-run

四、 不同技术栈网站的混合部署

如果你的多个网站使用不同后端技术(如一个 WordPress PHP 站,一个 Node.js API 站),需额外配置反向X_X。

示例:Node.js 应用运行在端口 3000

假设 api.c.com 是一个 Node.js 应用,监听 localhost:3000。

Nginx 配置片段:

server {
    listen 80;
    server_name api.c.com;

    location / {
        proxy_pass http://localhost:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

这样,用户访问 api.c.com 时,Nginx 会将请求转发给本地的 Node.js 进程,而对外仍表现为标准的 HTTP 服务。


五、 安全与优化建议(轻量级服务器特供)

  1. 防火墙配置:

    • 仅开放必要端口:80 (HTTP), 443 (HTTPS)。
    • 如果使用 SSH,建议更改默认端口或使用密钥登录。
    • 使用云厂商控制台的安全组或系统内 firewalld/ufw 限制。
  2. 资源监控:

    • 轻量级服务器内存/CPU 有限,避免单个网站代码存在内存泄漏。
    • 使用 htop 或 top 监控进程,必要时配置 Swap 分区防止 OOM(Out of Memory)。
  3. 日志分离:

    • 每个虚拟主机应有独立的 access.log 和 error.log,便于排查问题:
      access_log /var/log/nginx/a.com.access.log;
      error_log /var/log/nginx/a.com.error.log;
  4. 备份策略:

    • 定期备份网站文件和数据库。
    • 利用云厂商提供的“快照”功能,对整块磁盘创建快照,成本低且恢复快。
  5. 禁止直接 IP 访问:

    • 为防止恶意域名绑定到你的 IP,可在 Nginx 主配置中添加一个默认 server block,拒绝所有未匹配的请求:
      server {
       listen 80 default_server;
       server_name _;
       return 444; # 不返回任何响应,直接关闭连接
      }

六、 常见问题排查

问题 可能原因 解决方案
访问域名显示默认页 Nginx 配置未生效或优先级错误 检查 nginx -t,确认配置文件语法;清除浏览器缓存;检查 DNS 是否完全生效
403 Forbidden 文件权限不足 确保 root 目录及文件对 Nginx 运行用户(www-data/nginx)可读
502 Bad Gateway 后端服务未启动或端口错误 检查 PHP-FPM、Node.js 等服务是否运行;确认 proxy_pass 地址正确
HTTPS 报错 证书过期或配置错误 运行 certbot renew;检查 Nginx 中 SSL 证书路径是否正确

总结

在轻量级服务器上部署多站点,本质是 Nginx 的多 Server Block 配置 + 域名解析 + 独立目录管理。只要遵循“一域一配置、一域一目录”的原则,即可高效、安全地托管多个网站。对于初学者,建议使用宝塔面板(Baota Panel)等可视化工具简化操作,但理解底层原理有助于故障排查和资源优化。

未经允许不得转载:CLOUD云枢 » 使用轻量级云服务器如何部署多个不同的网站?