在阿里云轻量应用服务器(Simple Application Server)上实现“一机多站”,核心逻辑其实和你在本地搭建 LAMP/LNMP 环境是一样的,区别主要在于网络配置和域名解析。
简单来说,就是利用 Web 服务器软件(如 Nginx 或 Apache) 的虚拟主机(Virtual Host / Server Block)功能,配合反向XX和端口映射来实现。
以下是基于最主流、性能最好的 Nginx + PHP-FPM 架构的详细实操方案。假设你使用的是 Linux 系统(CentOS 7/8 或 Ubuntu 20.04+)。
核心思路
- 安装 Web 服务器:使用 Nginx 作为前端接收请求。
- 配置多个站点目录:为每个网站准备独立的文件夹和配置文件。
- 域名绑定与解析:将不同域名指向同一个服务器 IP,通过
server_name区分。 - 防火墙/安全组放行:确保阿里云控制台和系统内部防火墙都开放了 80/443 端口。
第一步:环境准备
如果你还没装好环境,推荐使用宝塔面板(BT Panel)或者手动安装 LNMP。
- 新手推荐:直接安装宝塔 Linux 面板。它在阿里云轻量应用服务器的镜像市场里有一键部署版本,或者你可以去官网下载脚本安装。宝塔会自动帮你处理 Nginx、PHP、MySQL 以及 SSL 证书,极大降低配置复杂度。
- 进阶/纯净推荐:手动编译或 yum/apt 安装 Nginx 和 PHP。
注意:本文后续以手动配置 Nginx 为例,因为这是理解原理的关键,也是大厂运维常用的方式。如果你用宝塔,只需在“网站”管理中添加新站点即可,底层逻辑一致。
第二步:创建网站目录结构
假设你要托管两个网站:www.example.com 和 blog.test.com。
# 创建目录
sudo mkdir -p /var/www/html/example
sudo mkdir -p /var/www/html/blog
# 放入测试文件
echo "<h1>Welcome to Example</h1>" | sudo tee /var/www/html/example/index.html
echo "<h1>Welcome to Blog</h1>" | sudo tee /var/www/html/blog/index.html
第三步:配置 Nginx 虚拟主机
Nginx 的核心优势在于其强大的虚拟主机配置能力。你需要为每个网站创建一个独立的配置文件。
-
进入配置目录
cd /etc/nginx/conf.d/ # CentOS/RHEL 系通常在这里 # 或者 cd /etc/nginx/sites-available/ # Debian/Ubuntu 系 -
创建第一个网站配置 (
example.conf)server { listen 80; server_name www.example.com example.com; # 替换为你的域名 root /var/www/html/example; index index.html index.htm; location / { try_files $uri $uri/ =404; } } -
创建第二个网站配置 (
blog.conf)server { listen 80; server_name blog.test.com; # 替换为你的另一个域名 root /var/www/html/blog; index index.html index.htm; location / { try_files $uri $uri/ =404; } } -
重载 Nginx 使配置生效
sudo nginx -t # 先检查语法是否有误 sudo systemctl reload nginx
第四步:域名解析(关键步骤)
在阿里云轻量服务器上,你只有一个公网 IP。要实现多站,必须依靠 DNS 解析。
- 登录阿里云控制台 -> 云解析 DNS。
- 添加两条 A 记录:
- 主机记录:
www(或@),记录值:你的轻量服务器公网 IP。 - 主机记录:
blog,记录值:你的轻量服务器公网 IP。
- 主机记录:
- 等待 DNS 生效(通常几分钟到几小时不等,可通过
ping www.example.com验证是否解析到了该 IP)。
第五步:处理 HTTPS(SSL 证书)
现在 HTTP 访问应该没问题了,但现代浏览器强制 HTTPS。对于轻量服务器,推荐使用 Let’s Encrypt 免费证书。
方法一:使用 Certbot(推荐)
# 安装 certbot
sudo apt install certbot python3-certbot-nginx # Ubuntu
# 或
sudo yum install certbot python3-certbot-nginx # CentOS
# 为第一个域名申请证书
sudo certbot --nginx -d www.example.com
# 为第二个域名申请证书
sudo certbot --nginx -d blog.test.com
Certbot 会自动修改你的 Nginx 配置文件,添加 SSL 监听指令,并重定向 HTTP 到 HTTPS。它会生成类似这样的配置片段:
server {
listen 443 ssl;
server_name www.example.com;
ssl_certificate /etc/letsencrypt/live/www.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/www.example.com/privkey.pem;
# ... 其他原有配置 ...
}
方法二:使用宝塔面板
如果你装了宝塔,直接在后台点击网站旁边的“SSL”图标,选择“Let’s Encrypt”,勾选域名,一键自动申请并配置,无需敲命令。
第六步:解决常见坑点
1. 阿里云轻量应用服务器的防火墙
轻量应用服务器有两层防护:
- 阿里云控制台的安全组/防火墙规则:进入轻量应用服务器控制台 -> “防火墙”选项卡。确保放行了 80 (HTTP) 和 443 (HTTPS) 端口。默认情况下这些是开放的,但如果你自己改过规则,记得加回来。
- 系统内部防火墙:
- CentOS:
firewall-cmd --zone=public --add-port=80/tcp --permanent&&firewall-cmd --reload - Ubuntu:
ufw allow 80/tcp&&ufw allow 443/tcp
- CentOS:
2. 带宽限制
阿里云轻量应用服务器的带宽通常是共享带宽且有限制的(例如 3Mbps, 5Mbps 等)。
- 影响:如果两个网站图片很多、流量很大,可能会跑满带宽,导致加载慢。
- 对策:静态资源(图片、CSS、JS)强烈建议上传到 OSS(对象存储) 并使用 CDN 提速。这样既节省了轻量服务器的带宽,又提升了用户体验。
3. PHP 内存占用
如果你的网站是动态的(WordPress, Discuz 等),每个 PHP 进程都会消耗内存。轻量服务器内存较小(如 1核1G),如果同时运行多个大型 PHP 站点,容易 OOM(内存溢出)。
- 优化:调整 PHP-FPM 的
pm.max_children参数,限制最大子进程数。 - 建议:如果是高并发场景,建议升级云服务器 ECS;如果只是个人博客、小展示站,1核2G 以上比较稳妥。
总结:最佳实践建议
- 静态资源分离:不要把图片、视频等大文件存在本地磁盘。使用阿里云 OSS + CDN,轻量服务器只负责计算逻辑和 HTML 渲染。
- 使用宝塔面板:除非你是为了学习 Linux 底层原理,否则在生产环境中,使用宝塔面板管理多站点能减少 80% 的配置错误风险,尤其是 SSL 证书的自动续期。
- 定期备份:轻量服务器没有自动快照策略(需手动开启),务必定期备份数据库和
/var/www目录。 - 安全加固:修改 SSH 默认端口,禁用 root 远程登录,安装 Fail2Ban 防止暴力破解。
通过以上步骤,你就可以在一个阿里云轻量应用服务器上稳定托管多个独立域名网站了。
云技术博客