如何在阿里云轻量服务器上部署多个网站?

在阿里云轻量应用服务器(Simple Application Server, SAS)上部署多个网站,核心思路与在普通 ECS 或自建 Linux 服务器上并无本质区别,主要依赖于 Web 服务器软件的反向X_X功能 或 端口映射。

由于轻量服务器通常预装了镜像(如 LAMP、LNMP),且配置相对简化,我们推荐以下两种最主流、稳定且易于维护的方案。假设你的操作系统为 CentOS/Ubuntu/Debian,Web 服务器使用 Nginx(目前最主流的选择)。

方案一:基于域名的虚拟主机(Nginx Server Blocks)—— 推荐

这是最标准、最优雅的方式。每个网站拥有独立的域名(或子域名),通过 Nginx 根据请求中的 Host 头将流量分发到不同的网站目录。

前置准备

  1. 域名解析:确保你的域名 A 记录已指向轻量服务器的公网 IP。
  2. SSL 证书:建议为每个网站申请免费 SSL 证书(阿里云提供 Let’s Encrypt 自动续期工具 acme.sh 或阿里云控制台直接签发),实现 HTTPS。

操作步骤

1. 安装并启动 Nginx
如果使用的是 LNMP 镜像,Nginx 通常已安装。若未安装:

# CentOS
yum install nginx -y
systemctl start nginx
systemctl enable nginx

# Ubuntu/Debian
apt update
apt install nginx -y
systemctl start nginx
systemctl enable nginx

2. 创建网站目录和文件
假设有两个网站:example.com 和 blog.example.com。

mkdir -p /var/www/html/example.com
mkdir -p /var/www/html/blog.example.com

# 创建测试页面
echo "<h1>Welcome to Example</h1>" > /var/www/html/example.com/index.html
echo "<h1>Welcome to Blog</h1>" > /var/www/html/blog.example.com/index.html

3. 配置 Nginx 虚拟主机
进入 Nginx 配置目录(通常是 /etc/nginx/conf.d/ 或 /etc/nginx/sites-available/,视发行版而定)。

创建第一个网站的配置文件 example.conf:

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

    root /var/www/html/example.com;
    index index.html index.htm;

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

    # 可选:重定向 HTTP 到 HTTPS
    # return 301 https://$server_name$request_uri;
}

创建第二个网站的配置文件 blog.conf:

server {
    listen 80;
    server_name blog.example.com;

    root /var/www/html/blog.example.com;
    index index.html index.htm;

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

4. 测试配置并重启 Nginx

nginx -t
# 如果输出 "syntax is ok" 和 "test is successful",则执行:
systemctl reload nginx

5. (进阶)启用 HTTPS
使用 acme.sh 自动获取证书:

curl https://get.acme.sh | sh
~/.acme.sh/acme.sh --issue -d example.com -w /var/www/html/example.com
~/.acme.sh/acme.sh --installcert -d example.com 
--key-file /etc/nginx/ssl/example.com.key 
--fullchain-file /etc/nginx/ssl/example.com.crt

然后在上述 server 块中监听 443 端口,并引入证书路径。


方案二:基于端口的反向X_X —— 适用于静态资源或非 Web 服务混合部署

如果你不仅想跑多个网站,还想在同一台服务器上运行不同端口服务的后端(如 Node.js 应用、Python Flask 等),可以使用 Nginx 作为反向X_X网关。

场景示例

  • 网站 A:传统 PHP/HTML 站点,监听本地 80 端口。
  • 网站 B:Node.js 应用,监听本地 3000 端口。
  • 网站 C:另一个 Node.js 应用,监听本地 3001 端口。

配置步骤

修改 Nginx 主配置或新建配置文件:

# 网站 A:直接访问
server {
    listen 80;
    server_name a.example.com;
    root /var/www/html/a_site;
    index index.html;

    location / {
        try_files $uri $uri/ @php;
    }

    location @php {
        fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 根据实际 PHP 版本调整
        fastcgi_index index.php;
        include fastcgi_params;
    }
}

# 网站 B:反向X_X到 3000 端口
server {
    listen 80;
    server_name b.example.com;

    location / {
        proxy_pass http://127.0.0.1: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;
    }
}

# 网站 C:反向X_X到 3001 端口
server {
    listen 80;
    server_name c.example.com;

    location / {
        proxy_pass http://127.0.0.1:3001;
        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;
    }
}

注意:此方案要求你的后端服务(如 Node.js、Go、Python 等)必须绑定到 127.0.0.1 而非 0.0.0.0,以确保安全性,防止外部直接访问后端端口。


关键注意事项与安全建议

  1. 防火墙设置:
    阿里云轻量应用服务器自带“防火墙”规则。你只需在阿里云控制台的安全组/防火墙中开放 80 (HTTP) 和 443 (HTTPS) 端口即可。无需手动配置 iptables 或 firewalld,除非你有特殊需求。

  2. PHP-FPM 多用户隔离:
    如果使用 PHP,默认情况下所有 PHP 进程可能以同一用户(如 www-data 或 nginx)运行。对于多租户环境,建议使用 php-fpm 的 user/group 配置,或通过 Docker 容器化每个网站,实现更好的隔离性。

  3. 资源限制:
    轻量服务器 CPU 和内存有限。避免同时运行过多重型应用(如大型 WordPress + Elasticsearch + Redis)。建议监控资源使用情况,必要时升级实例规格。

  4. 备份策略:
    定期备份数据库和网站文件。阿里云轻量应用服务器支持“快照”功能,可在控制台一键创建系统盘快照,用于灾难恢复。

  5. 合规性:
    确保所部署的网站内容符合中国法律法规。阿里云会对备案域名进行校验,未备案域名无法解析至中国大陆节点。请务必完成 ICP 备案后再配置域名解析。

总结

  • 纯静态/动态网页 → 使用 方案一(Nginx Server Blocks),简单高效。
  • 混合架构(含 Node/Python 后端) → 使用 方案二(反向X_X),灵活扩展。
  • 追求高隔离性与可移植性 → 考虑使用 Docker Compose 管理多个容器,每个网站独立容器,通过 Nginx 统一入口。

对于大多数个人开发者和小企业用户,方案一 是最直接、维护成本最低的选择。

未经允许不得转载:CLOUD云枢 » 如何在阿里云轻量服务器上部署多个网站?