添加新功能提升用户体验
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
当然可以!以下是我为你精心修正错别字、润色语句、补充内容并尽量保持原创性后的完整文章,结构更清晰、语言更流畅、技术细节更丰富,适合作为一篇高质量的技术指南发布:
让一台服务器承载多个网站,是现代运维工程师必备的核心技能。
在互联网高度发展的今天,无论是个人开发者搭建作品集、初创团队部署多个产品线,还是企业级应用分环境运行,都迫切需要在单一物理或云服务器上高效托管多个独立网站,这不仅能显著降低硬件与运维成本,还能提升资源利用率和管理灵活性。
Linux 作为全球最主流的服务器操作系统,凭借其稳定性、开源性和强大的社区支持,天然适配通过 “虚拟主机”(Virtual Host) 技术实现“一机多站”,本文将从零开始,手把手教你如何在 Ubuntu/CentOS 等主流发行版上,基于 Apache 或 Nginx 配置虚拟主机,构建可生产部署的多站点架构。
📌 什么是虚拟主机?
虚拟主机(Virtual Hosting),又称“虚拟服务器”,是一种通过软件配置,在单台物理服务器上划分出多个逻辑 Web 主机的技术,每个虚拟主机拥有:
- 独立绑定的域名(如
site1.com、blog.site2.org) - 专属的网站根目录(DocumentRoot)
- 独立的日志文件(访问日志 + 错误日志)
- 可自定义的权限策略与安全设置
当用户访问不同域名时,Web 服务器会根据 HTTP 请求头中的 Host 字段智能路由到对应站点,实现“同IP、同端口、不同内容”的效果 —— 这正是现代共享主机和云服务的基础原理。
🔍 虚拟主机的三种类型(按识别方式)
| 类型 | 原理 | 优缺点 | 适用场景 |
|---|---|---|---|
| 基于 IP 的虚拟主机 | 每个站点绑定独立公网 IP | 成本高、配置复杂、扩展性差 | 已淘汰,仅历史项目参考 |
| 基于端口的虚拟主机 | 同一 IP,不同端口(如 8080、8081) | 用户需手动输入端口,体验差 | 内部测试、临时调试 |
| ✅ 基于名称的虚拟主机 | 通过域名区分站点,无需额外 IP 或端口 | 成本低、易管理、用户体验好 | 生产环境首选方案 |
本文将聚焦于最常用、最实用的 基于名称的虚拟主机 配置方法。
⚙️ 准备工作清单
在动手之前,请确保你已准备好以下环境:
- Linux 服务器:推荐 Ubuntu 20.04/22.04 LTS 或 CentOS 7/8/Stream(本文以 Ubuntu 为例)。
- Web 服务器软件:Apache 或 Nginx(二者任选其一,也可同时安装用于对比学习)。
- 域名解析:
- 生产环境:域名已备案并正确解析至服务器公网 IP。
- 本地测试:可通过修改
/etc/hosts文件模拟域名解析。
- 操作权限:具备
root或sudo权限的用户账户。 - (可选)防火墙放行 80(HTTP)、443(HTTPS)端口。
🛠️ 安装 Web 服务器(Apache / Nginx)
▶ 安装 Apache
sudo apt update && sudo apt upgrade -y sudo apt install apache2 -y
▶ 安装 Nginx
sudo apt install nginx -y
▶ 启动服务 & 设置开机自启
# Apache sudo systemctl start apache2 sudo systemctl enable apache2 # Nginx sudo systemctl start nginx sudo systemctl enable nginx
✅ 使用
systemctl status apache2或nginx验证服务是否正常运行。
🗂️ 创建站点目录结构(通用步骤)
无论使用 Apache 还是 Nginx,都需要先规划好站点文件存放路径:
sudo mkdir -p /var/www/site1.com/html sudo mkdir -p /var/www/site2.com/html
🔐 设置合理权限(安全第一)
# 将目录所有权赋予当前用户(便于后续编辑) sudo chown -R $USER:$USER /var/www/site1.com/html sudo chown -R $USER:$USER /var/www/site2.com/html # 设置标准权限:所有者可读写执行,组和其他用户只读执行 sudo chmod -R 755 /var/www
🧪 创建测试首页
echo "<h1 style='color:blue;'>🎉 欢迎来到 Site1.com</h1>" | sudo tee /var/www/site1.com/html/index.html echo "<h1 style='color:green;'>🚀 欢迎来到 Site2.com</h1>" | sudo tee /var/www/site2.com/html/index.html
🖥️ 配置 Apache 虚拟主机
进入配置目录
cd /etc/apache2/sites-available/
创建虚拟主机配置文件:site1.com.conf
<VirtualHost *:80>
ServerAdmin admin@site1.com
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
# 安全增强(可选)
<Directory /var/www/site1.com/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
💡 同理创建
site2.com.conf,只需替换域名和路径即可。
启用站点 & 重载配置
sudo a2ensite site1.com.conf sudo a2ensite site2.com.conf sudo systemctl reload apache2
(本地测试)修改 hosts 文件
sudo nano /etc/hosts
0.0.1 site1.com
127.0.0.1 site2.com
🌐 打开浏览器访问 http://site1.com 和 http://site2.com,应看到不同欢迎页!
🌀 配置 Nginx 虚拟主机
进入配置目录
cd /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 index.htm;
access_log /var/log/nginx/site1_access.log;
error_log /var/log/nginx/site1_error.log;
location / {
try_files $uri $uri/ =404;
}
# 安全加固(可选)
location ~ /\.ht {
deny all;
}
}
启用站点(创建软链接)
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/
检查语法 & 重载服务
sudo nginx -t # 测试配置语法 sudo systemctl reload nginx
✅ 同样修改
/etc/hosts并访问测试,效果与 Apache 一致。
🚀 进阶技巧与最佳实践
掌握基础配置后,以下是让你的多站点架构更健壮、安全、高效的进阶建议:
🔐 强制启用 HTTPS(Let’s Encrypt 免费证书)
sudo apt install certbot python3-certbot-apache # Apache # 或 sudo apt install certbot python3-certbot-nginx # Nginx sudo certbot --apache -d site1.com -d www.site1.com sudo certbot --nginx -d site2.com -d www.site2.com
Certbot 会自动续期证书,无需人工干预。
📊 日志轮转(logrotate)
避免日志撑爆磁盘,编辑 /etc/logrotate.d/apache2 或自定义规则:
/var/log/apache2/*.log {
weekly
missingok
rotate 52
compress
delaycompress


