在轻量级服务器(如Nginx或Apache)上配置多个网站共存,通常称为“虚拟主机”(Virtual Hosts),是通过 基于域名的虚拟主机 实现的。以下以最常用的 Nginx 和 Apache 为例,介绍如何在同一台轻服务器上配置多个网站。
✅ 前提条件
- 你有一台轻服务器(如腾讯云轻量应用服务器、阿里云ECS等)
- 已安装 Web 服务器(Nginx 或 Apache)
- 拥有多个域名,并已将这些域名解析到服务器公网 IP
- 网站文件分别存放于不同目录
方法一:使用 Nginx 配置多站点
步骤 1:准备网站文件目录
假设你要托管两个网站:
site1.com→/var/www/site1site2.com→/var/www/site2
创建目录并放入测试页面:
sudo mkdir -p /var/www/site1 /var/www/site2
echo "<h1>Site 1 - site1.com</h1>" | sudo tee /var/www/site1/index.html
echo "<h1>Site 2 - site2.com</h1>" | sudo tee /var/www/site2/index.html
步骤 2:创建 Nginx 虚拟主机配置文件
在 /etc/nginx/sites-available/ 目录下创建配置文件:
sudo nano /etc/nginx/sites-available/site1.com
内容如下:
server {
listen 80;
server_name site1.com www.site1.com;
root /var/www/site1;
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;
index index.html;
location / {
try_files $uri $uri/ =404;
}
}
步骤 3:启用站点(创建符号链接)
将配置文件链接到 sites-enabled:
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/
步骤 4:测试并重启 Nginx
sudo nginx -t # 测试配置是否正确
sudo systemctl reload nginx # 重新加载配置
✅ 完成!现在访问 site1.com 和 site2.com 将显示不同的网站。
方法二:使用 Apache 配置多站点
步骤 1:准备网站目录(同上)
sudo mkdir -p /var/www/site1 /var/www/site2
echo "<h1>Site 1 - site1.com</h1>" | sudo tee /var/www/site1/index.html
echo "<h1>Site 2 - site2.com</h1>" | sudo tee /var/www/site2/index.html
步骤 2:创建虚拟主机配置文件
在 /etc/apache2/sites-available/ 下创建:
sudo nano /etc/apache2/sites-available/site1.com.conf
内容:
<VirtualHost *:80>
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/site1
<Directory /var/www/site1>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site1_error.log
CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>
同理创建 site2.com.conf:
sudo nano /etc/apache2/sites-available/site2.com.conf
<VirtualHost *:80>
ServerName site2.com
ServerAlias www.site2.com
DocumentRoot /var/www/site2
<Directory /var/www/site2>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/site2_error.log
CustomLog ${APACHE_LOG_DIR}/site2_access.log combined
</VirtualHost>
步骤 3:启用站点
sudo a2ensite site1.com.conf
sudo a2ensite site2.com.conf
步骤 4:重启 Apache
sudo systemctl restart apache2
✅ 多个网站即可通过域名访问。
🔐 可选:为每个网站配置 HTTPS(推荐)
使用 Let’s Encrypt 免费证书(需域名已正确解析):
sudo apt install certbot python3-certbot-nginx # Nginx 版
# 或
sudo apt install certbot python3-certbot-apache # Apache 版
# 为 site1.com 申请证书
sudo certbot --nginx -d site1.com -d www.site1.com
# 或
sudo certbot --apache -d site1.com -d www.site1.com
Certbot 会自动修改配置文件启用 HTTPS。
🧩 注意事项
-
防火墙开放 80/443 端口:
sudo ufw allow 'Nginx Full' # 或 'Apache Full' -
DNS 解析:确保每个域名 A 记录指向服务器公网 IP。
-
避免端口冲突:所有站点共享 80/443 端口,靠域名区分。
-
默认站点:可设置一个
default_server处理未匹配的请求。
✅ 总结
| 步骤 | 内容 |
|---|---|
| 1 | 准备不同网站的根目录 |
| 2 | 配置 Web 服务器虚拟主机(Nginx/Apache) |
| 3 | 启用配置并重启服务 |
| 4 | DNS 解析 + 可选 HTTPS |
这样就能轻松实现一台轻服务器运行多个独立网站!
如果你提供具体环境(如 Ubuntu + Nginx),我可以给出完整配置示例。
CLOUD云枢