在服务器环境中,“划分虚拟主机”通常指的是在一台物理服务器上运行多个独立的网站或服务,每个服务拥有独立的域名、目录和配置,这主要通过 Web 服务器软件(如 Nginx、Apache)或 容器技术(如 Docker)来实现。
以下是几种主流的实现方式,按推荐程度和适用场景分类:
使用 Nginx 配置虚拟主机(最推荐,高性能)
Nginx 是目前最流行的 Web 服务器,配置轻量、性能高,适合大多数场景。
创建网站目录
sudo mkdir -p /var/www/example.com/html sudo chown -R $USER:$USER /var/www/example.com/html sudo chmod -R 755 /var/www
创建测试页面
echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/html/index.html
创建 Nginx 配置文件
在 /etc/nginx/sites-available/ 下创建文件 example.com:
server {
listen 80;
server_name example.com www.example.com;
root /var/www/example.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
}
启用配置并重启 Nginx
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ sudo nginx -t # 测试配置语法 sudo systemctl restart nginx
提示:Nginx 支持基于域名(Server Name)和基于端口的虚拟主机。
使用 Apache 配置虚拟主机(经典,兼容性好)
Apache 使用 .htaccess 和模块化的配置方式,适合需要复杂重写规则的场景。
创建网站目录
sudo mkdir -p /var/www/example.com/public_html
创建测试页面
echo "<h1>Welcome to example.com (Apache)</h1>" | sudo tee /var/www/example.com/public_html/index.html
创建虚拟主机配置文件
在 /etc/apache2/sites-available/ 下创建 example.com.conf:
<VirtualHost :80>
ServerAdmin webmaster@example.com
ServerName example.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/public_html
<Directory /var/www/example.com/public_html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
</VirtualHost>
启用站点并重启 Apache
sudo a2ensite example.com.conf sudo systemctl reload apache2
使用 Docker 容器隔离(现代,安全隔离)
每个虚拟主机运行在独立的容器中,互不干扰,便于部署和管理。
创建 docker-compose.yml
version: '3'
services:
site1:
image: nginx:alpine
volumes:
- ./site1/html:/usr/share/nginx/html
ports:
- "8081:80"
networks:
- webnet
site2:
image: nginx:alpine
volumes:
- ./site2/html:/usr/share/nginx/html
ports:
- "8082:80"
networks:
- webnet
networks:
webnet:
启动服务
docker-compose up -d
优点:环境隔离、易于迁移、资源限制方便。
缺点:需要学习 Docker 基础,端口管理稍复杂。
使用控制面板(适合非技术人员)
如果你不想手动配置,可以使用以下控制面板:
| 控制面板 | 特点 |
|---|---|
| cPanel | 功能强大,商业软件,广泛用于美国主机 |
| 宝塔面板 (BT Panel) | 中文友好,免费/付费版,适合国内用户 |
| aaPanel | 轻量级,开源,界面简洁 |
| Webmin | 通用 Linux 管理面板,支持虚拟主机配置 |
选择建议
| 场景 | 推荐方案 |
|---|---|
| 高性能、高并发网站 | Nginx |
需要 .htaccess 或 PHP 兼容性 |
Apache |
| 微服务架构、多环境隔离 | Docker |
| 新手、快速部署、不想记命令 | 宝塔面板 / cPanel |
注意事项
- DNS 解析:确保域名已正确指向服务器 IP。
- 防火墙:开放 80(HTTP)和 443(HTTPS)端口。
- SSL 证书:生产环境务必配置 HTTPS(可使用 Let’s Encrypt 免费证书)。
- 权限安全:避免使用
root运行 Web 服务,设置合理的文件权限。
如需具体某一种方案的详细步骤(如配置 SSL、反向代理等),请告诉我!
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/484045.html



