在云主机上搭建虚拟主机,实际上就是在你已有的云服务器(通常是一个独立的Linux或Windows系统)上,通过配置Web服务器软件(如Nginx、Apache)来创建多个网站或应用,每个网站拥有独立的域名、根目录、访问日志和可能的资源限制。

这个过程和传统物理服务器没有本质区别,核心是让一个服务器软件监听80/443端口,并根据HTTP请求中不同的“域名”或“IP”,将请求分发到不同网站目录。
以下是基于最常用的Linux + Nginx 环境的详细步骤,如果你用的是Apache或Windows IIS,原理类似。
核心步骤(以Linux Ubuntu/Debian + Nginx为例)
第一步:环境准备(假设你已经通过SSH连接上云主机)
1、安装Nginx(如果未安装):

sudo apt update
sudo apt install nginx -y2、确保云主机防火墙放行Web端口:
- 云服务商控制台的安全组:放行80 (HTTP)、443 (HTTPS) 端口。
- 云主机内部防火墙(如ufw):sudo ufw allow 80,sudo ufw allow 443。
第二步:创建网站目录和文件(以两个网站为例)
假设你要创建site1.com 和site2.com。

1、创建目录(存放网站文件):
sudo mkdir -p /var/www/site1.com/html
sudo mkdir -p /var/www/site2.com/html2、创建测试首页(方便验证):
echo "<h1>这是 Site1</h1>" | sudo tee /var/www/site1.com/html/index.html
echo "<h1>这是 Site2</h1>" | sudo tee /var/www/site2.com/html/index.html3、设置目录权限(确保Nginx用户 www-data 可以读取):
sudo chown -R www-data:www-data /var/www/site1.com
sudo chown -R www-data:www-data /var/www/site2.com第三步:配置Nginx虚拟主机(核心操作)
在Nginx中,虚拟主机配置通过server块实现。
1、创建虚拟主机配置文件:
Nginx通常将每个网站的独立配置文件放在/etc/nginx/sites-available/ 目录。
sudo nano /etc/nginx/sites-available/site1.com2、写入配置内容(以site1.com 为例):
server {
listen 80; # 监听IPv4的80端口
listen [::]:80; # 监听IPv6的80端口
root /var/www/site1.com/html; # 网站文件根目录
index index.html index.htm; # 默认首页文件
server_name site1.com www.site1.com; # 重要!绑定的域名
location / {
try_files $uri $uri/ =404;
}
# 可选:配置访问日志
access_log /var/log/nginx/site1.com.access.log;
error_log /var/log/nginx/site1.com.error.log;
}关键理解server_name是虚拟主机的“身份证”,当浏览器访问site1.com 时,Nginx会匹配这个server_name,然后将请求交给这个server block处理,root指向的目录就是网站文件所在地。
3、创建第二个虚拟主机配置:
复制并修改,将文件名、server_name、root、日志路径全部改为site2.com 对应的值。
1、创建软链接:从sites-available 链接到sites-enabled 目录,Nginx才会生效。
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/2、测试配置是否有语法错误:
sudo nginx -t 如果输出syntax is ok 和test is successful,继续下一步。
3、重载Nginx使配置生效:
sudo systemctl reload nginx这一步在云服务商的控制台或域名注册商的管理后台完成,而不是在云主机SSH里。
- 将site1.com 和www.site1.com 解析到你的云主机的公网IP。
- 将site2.com 和www.site2.com 也解析到同一个公网IP。
- 浏览器访问http://site1.com,应看到“这是 Site1”。
- 浏览器访问http://site2.com,应看到“这是 Site2”。
1、使用Apache:配置类似,文件在/etc/apache2/sites-available/,指令是<VirtualHost *:80>,然后通过a2ensite 启用。
2、配置HTTPS:使用Let's Encrypt免费SSL证书,工具推荐certbot:
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d site1.com -d www.site1.com
Certbot会自动修改你的虚拟主机配置(添加ssl证书路径、监听443端口、HTTP自动跳转HTTPS)。
3、性能与安全:
资源隔离:云主机上的虚拟主机不隔离CPU和内存,如果某个虚拟主机流量过高或被攻击,会影响同一台云主机上的其他网站,这是它与“独立虚拟主机”方案的最大区别。
用户隔离:默认所有虚拟主机使用同一个www-data用户,权限不完全隔离,生产环境建议使用PHP-FPM 的池(pool)功能配置不同用户,或使用Docker容器实现更严格的隔离。
4、使用面板(新手强烈推荐):
BT(宝塔面板):国产流行,图形化操作,一键创建网站、配置SSL、数据库,命令安装:wget -O install.sh http://download.bt.cn/install/install-ubuntu_6.0.sh && sudo bash install.sh
Oneinstack:全自动编译安装LNMP/LAMP环境,后续命令行管理。
Cockpit:轻量级Web管理界面,适合系统级管理,非专门建站面板。
| 步骤 | 操作内容 | 关键点 |
| 1 | 安装Web服务器 | Nginx/Apache |
| 2 | 创建网站目录与文件 | 独立的根目录 |
| 3 | 编写虚拟主机配置 | server_name 绑定域名 |
| 4 | 启用配置并重载服务 | ln -s +reload |
| 5 | 配置DNS解析 | 到云主机的公网IP |
| 6 | 验证访问 | 不同域名显示不同内容 |
按照以上流程,你可以在单台云主机上高效地搭建和管理多个虚拟主机(网站)。
文章摘自:https://idc.huochengrm.cn/zj/27048.html
评论