在阿里云轻量应用服务器上配置多个域名指向不同网站,核心是通过 Web 服务器(如 Nginx 或 Apache)的虚拟主机(Server Block / VirtualHost)功能实现。以下是基于 Nginx 的详细操作步骤(Apache 逻辑类似,稍后补充):
✅ 前提条件
- 已购买并登录阿里云轻量应用服务器;
- 已安装 Nginx(若未安装:
apt update && apt install nginx -y或yum install nginx -y); - 每个域名的 DNS 已正确解析到服务器公网 IP(A 记录);
- 各网站的代码/静态文件已准备就绪(如
/var/www/site1,/var/www/site2)。
🔧 步骤一:创建网站目录与权限
sudo mkdir -p /var/www/site1/html
sudo mkdir -p /var/www/site2/html
# 上传你的网站内容到对应目录(例如 site1 放 index.html,site2 放另一个站点)
sudo chown -R www-data:www-data /var/www/site1
sudo chown -R www-data:www-data /var/www/site2
sudo chmod -R 755 /var/www
💡 提示:确保
www-data是 Nginx 运行用户(Ubuntu/Debian);CentOS 可能是nginx或apache。
📝 步骤二:为每个域名创建 Nginx 配置文件
示例:site1.com → /var/www/site1/html
sudo nano /etc/nginx/sites-available/site1.com
内容如下:
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
# 可选:启用 HTTPS(需配合 Let's Encrypt)
# include snippets/ssl-site1.com.conf;
}
示例:site2.com → /var/www/site2/html
sudo nano /etc/nginx/sites-available/site2.com
server {
listen 80;
server_name site2.com www.site2.com;
root /var/www/site2/html;
index index.php index.html;
# PHP-FPM 示例(如需)
location ~ .php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location / {
try_files $uri $uri/ =404;
}
}
🔗 步骤三:启用站点(创建软链接)
sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.com /etc/nginx/sites-enabled/
⚠️ 注意:默认可能有 default 站点,建议先禁用避免冲突:
sudo rm /etc/nginx/sites-enabled/default
▶️ 步骤四:测试配置并重启 Nginx
sudo nginx -t # 检查语法是否正确
sudo systemctl reload nginx # 或 sudo systemctl restart nginx
✅ 成功标志:无报错,且访问任一域名能显示对应网站内容。
🔐 进阶:启用 HTTPS(推荐)
使用 Certbot 自动申请免费 SSL 证书:
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d site1.com -d www.site1.com -d site2.com -d www.site2.com
Certbot 会自动修改 Nginx 配置,添加 HTTPS 监听、重定向 HTTP→HTTPS,并设置自动续期。
🔄 如果是 Apache?
思路相同,只需:
- 在
/etc/apache2/sites-available/创建.conf文件; - 使用
a2ensite启用; - 用
apache2ctl configtest+systemctl reload apache2生效。
示例片段:
<VirtualHost *:80>
ServerName site1.com
DocumentRoot /var/www/site1/html
</VirtualHost>
🛡️ 安全建议
- 限制目录权限(
chmod 755,文件644); - 关闭不必要的服务端口;
- 配置防火墙(阿里云安全组仅开放 80/443);
- 定期更新系统 & Web 软件补丁。
需要我为你生成一个完整的自动化脚本(含 DNS 检查、SSL 自动部署),或针对 WordPress/ThinkPHP 等特定框架做优化配置吗?
云小栈