在阿里云服务器(如ECS实例)上配置两个不同的网站,通常可以通过 基于域名的虚拟主机(Virtual Host) 实现。以下是详细的步骤,以常见的 Linux + Apache 或 Nginx 为例进行说明。
🌐 前提条件
- 拥有一台阿里云 ECS 实例(Linux 系统,如 CentOS、Ubuntu)
- 已安装 Web 服务器(Apache 或 Nginx)
- 有两个域名(如
site1.com和site2.com),并已解析到该服务器公网 IP - 安全组已放行 HTTP(80端口)和 HTTPS(443端口)
✅ 方法一:使用 Nginx 配置两个网站(推荐)
1. 安装 Nginx(如未安装)
# Ubuntu/Debian
sudo apt update
sudo apt install nginx -y
# CentOS/RHEL
sudo yum install nginx -y
启动并设置开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
2. 创建两个网站的根目录
sudo mkdir -p /var/www/site1.com/html
sudo mkdir -p /var/www/site2.com/html
创建测试页面:
echo "<h1>Welcome to Site1.com</h1>" | sudo tee /var/www/site1.com/html/index.html
echo "<h1>Welcome to Site2.com</h1>" | sudo tee /var/www/site2.com/html/index.html
3. 设置权限
sudo chown -R www-data:www-data /var/www # Ubuntu/Debian
# 或
sudo chown -R nginx:nginx /var/www # CentOS
4. 创建 Nginx 虚拟主机配置文件
配置 site1.com
sudo nano /etc/nginx/sites-available/site1.com
内容如下:
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
配置 site2.com
sudo nano /etc/nginx/sites-available/site2.com
server {
listen 80;
server_name site2.com www.site2.com;
root /var/www/site2.com/html;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
5. 启用站点(创建软链接)
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/
注意:Ubuntu 默认有
sites-enabled目录;CentOS 可能需要手动创建或直接放在/etc/nginx/conf.d/下。
6. 测试并重启 Nginx
sudo nginx -t # 测试配置是否正确
sudo systemctl reload nginx
✅ 方法二:使用 Apache 配置两个网站
1. 安装 Apache(如未安装)
# Ubuntu/Debian
sudo apt install apache2 -y
# CentOS
sudo yum install httpd -y
2. 创建网站目录
sudo mkdir -p /var/www/site1.com/html
sudo mkdir -p /var/www/site2.com/html
echo "<h1>Site1.com</h1>" | sudo tee /var/www/site1.com/html/index.html
echo "<h1>Site2.com</h1>" | sudo tee /var/www/site2.com/html/index.html
3. 创建虚拟主机配置文件
Ubuntu/Debian:
sudo nano /etc/apache2/sites-available/site1.com.conf
内容:
<VirtualHost *:80>
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/site1.com/html
ErrorLog ${APACHE_LOG_DIR}/site1_error.log
CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>
同样创建 site2.com.conf:
<VirtualHost *:80>
ServerName site2.com
ServerAlias www.site2.com
DocumentRoot /var/www/site2.com/html
ErrorLog ${APACHE_LOG_DIR}/site2_error.log
CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
</VirtualHost>
启用站点:
sudo a2ensite site1.com.conf
sudo a2ensite site2.com.conf
sudo systemctl reload apache2
CentOS:
将配置文件放入 /etc/httpd/conf.d/site1.com.conf 即可,Apache 会自动加载 .conf 文件。
🔐 可选:配置 HTTPS(SSL 证书)
使用 Let’s Encrypt 免费证书(需域名已解析):
sudo certbot --nginx -d site1.com -d www.site1.com # Nginx
# 或
sudo certbot --apache -d site1.com # Apache
Certbot 会自动配置 SSL 并重定向 HTTP → HTTPS。
🧪 验证访问
在浏览器中分别访问:
http://site1.comhttp://site2.com
应看到各自对应的页面。
⚠️ 注意事项
- 域名解析:确保两个域名 A 记录指向你的 ECS 公网 IP。
- 安全组规则:在阿里云控制台开放 80 和 443 端口。
- 防火墙:检查系统防火墙(如
ufw、firewalld)是否放行。 - SELinux(CentOS):必要时调整上下文:
sudo setsebool -P httpd_can_network_connect 1
✅ 总结:通过虚拟主机技术(Nginx/Apache),可以在同一台阿里云服务器上轻松托管多个网站。推荐使用 Nginx,性能更好且配置清晰。
如有需要,我也可以提供一键部署脚本或 Docker 方案。欢迎继续提问!
云小栈