在阿里云轻量应用服务器(Simple Application Server, SAS)上部署多个网站,核心思路与在普通 ECS 或自建 Linux 服务器上并无本质区别,主要依赖于 Web 服务器软件的反向X_X功能 或 端口映射。
由于轻量服务器通常预装了镜像(如 LAMP、LNMP),且配置相对简化,我们推荐以下两种最主流、稳定且易于维护的方案。假设你的操作系统为 CentOS/Ubuntu/Debian,Web 服务器使用 Nginx(目前最主流的选择)。
方案一:基于域名的虚拟主机(Nginx Server Blocks)—— 推荐
这是最标准、最优雅的方式。每个网站拥有独立的域名(或子域名),通过 Nginx 根据请求中的 Host 头将流量分发到不同的网站目录。
前置准备
- 域名解析:确保你的域名 A 记录已指向轻量服务器的公网 IP。
- 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,以确保安全性,防止外部直接访问后端端口。
关键注意事项与安全建议
-
防火墙设置:
阿里云轻量应用服务器自带“防火墙”规则。你只需在阿里云控制台的安全组/防火墙中开放 80 (HTTP) 和 443 (HTTPS) 端口即可。无需手动配置iptables或firewalld,除非你有特殊需求。 -
PHP-FPM 多用户隔离:
如果使用 PHP,默认情况下所有 PHP 进程可能以同一用户(如www-data或nginx)运行。对于多租户环境,建议使用php-fpm的user/group配置,或通过 Docker 容器化每个网站,实现更好的隔离性。 -
资源限制:
轻量服务器 CPU 和内存有限。避免同时运行过多重型应用(如大型 WordPress + Elasticsearch + Redis)。建议监控资源使用情况,必要时升级实例规格。 -
备份策略:
定期备份数据库和网站文件。阿里云轻量应用服务器支持“快照”功能,可在控制台一键创建系统盘快照,用于灾难恢复。 -
合规性:
确保所部署的网站内容符合中国法律法规。阿里云会对备案域名进行校验,未备案域名无法解析至中国大陆节点。请务必完成 ICP 备案后再配置域名解析。
总结
- 纯静态/动态网页 → 使用 方案一(Nginx Server Blocks),简单高效。
- 混合架构(含 Node/Python 后端) → 使用 方案二(反向X_X),灵活扩展。
- 追求高隔离性与可移植性 → 考虑使用 Docker Compose 管理多个容器,每个网站独立容器,通过 Nginx 统一入口。
对于大多数个人开发者和小企业用户,方案一 是最直接、维护成本最低的选择。
CLOUD云枢