在服务器里创建虚拟主机,就是通过配置Web服务器软件(如Nginx或Apache),让一台机器根据域名提供独立的网站环境,这几乎是多站点托管最实用的基础操作。
虚拟主机怎么设置?从服务器环境搭建开始
很多新手在云服务器上跑起第一个网站后,总想再挂几个项目,这时就需要配置虚拟主机,它的核心逻辑很简单:让服务器监听不同的域名,然后指向对应的文件夹,下面从最基础的准备说起。
准备服务器和域名解析
你需要一台运行Linux的云服务器(国内主流厂商如简米云、酷番云,按时长付费或包年),以及至少两个已解析到该服务器IP的域名,域名解析建议提前做好,DNS生效通常需要几分钟到几小时,但多数情况下10分钟内就能ping通。
- 服务器系统:推荐Ubuntu 20.04/22.04或CentOS 7/8,包管理命令不同,但配置思路一致。
- 域名解析:在DNS管理后台添加A记录,指向服务器公网IP,用
ping yourdomain.com验证是否生效。
安装Web服务器软件
目前行业共识是,Nginx处理静态资源更高效,Apache适合动态内容且兼容性更广,你可以根据需求选择,以下命令均在Ubuntu下测试。
- 安装Nginx:
sudo apt update && sudo apt install nginx -y - 安装Apache:
sudo apt update && sudo apt install apache2 -y
安装完成后,访问服务器IP,如果看到默认欢迎页,说明Web服务器工作正常,接下来就可以创建虚拟主机配置了。
创建网站目录和权限
每个站点需要独立的文件夹存放文件,通常放在/var/www/下,按域名命名。
sudo mkdir -p /var/www/example.com/htmlsudo chown -R www-data:www-data /var/www/example.com- 设置权限:
sudo chmod -R 755 /var/www/example.com
然后在这个目录里放一个简单的index.html,用于测试配置是否生效。
虚拟主机配置步骤:Apache与Nginx实操指南
配置过程因服务器软件不同而有差异,但思路一致:创建站点配置文件,指定域名、根目录和日志路径,最后启用配置并重载服务。
Apache虚拟主机配置方法
Apache的虚拟主机配置文件位于/etc/apache2/sites-available/,默认有一个000-default.conf,我们为每个站点创建新文件。
- 创建配置文件:
sudo nano /etc/apache2/sites-available/example.com.conf - 写入以下内容:
<VirtualHost :80> ServerAdmin admin@example.com ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/example.com/html ErrorLog ${APACHE_LOG_DIR}/example.com_error.log CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined </VirtualHost> - 启用站点:
sudo a2ensite example.com.conf - 禁用默认站点(可选):
sudo a2dissite 000-default.conf - 重载配置:
sudo systemctl reload apache2
配置完成后,浏览器访问http://example.com,应该看到你之前放的测试页面,如果遇到403错误,检查目录权限和DocumentRoot是否正确。
Nginx虚拟主机配置方法
Nginx的站点配置文件通常放在/etc/nginx/sites-available/,然后创建软链接到sites-enabled/。
- 创建配置文件:
sudo nano /etc/nginx/sites-available/example.comserver { listen 80; listen [::]:80; root /var/www/example.com/html; index index.html index.htm; server_name example.com www.example.com; location / { try_files $uri $uri/ =404; } access_log /var/log/nginx/example.com_access.log; error_log /var/log/nginx/example.com_error.log; } - 创建软链接启用:
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/ - 测试配置:
sudo nginx -t - 重载:
sudo systemctl reload nginx
同样,访问域名测试,注意Nginx配置中server_name必须精确匹配域名,否则可能跳到默认站点。
启用站点并测试
无论用哪种软件,重载后都要检查日志是否有报错,Apache日志在/var/log/apache2/,Nginx日志在/var/log/nginx/,如果域名访问失败,先确认解析是否生效,再检查防火墙是否放行80端口(sudo ufw allow 80)。
业内专家指出,大多数虚拟主机配置问题出在域名解析未生效或配置文件语法错误上,建议每次修改配置后都用对应命令测试语法(Nginx用nginx -t,Apache用apache2ctl configtest)。
虚拟主机和云服务器区别:哪种适合你的业务?
很多人在选购时纠结虚拟主机和云服务器,其实两者是不同维度的产品,虚拟主机是共享服务器资源,由服务商帮你配置好环境,你只需上传文件;而云服务器是独立资源,需要自己搭建环境,包括创建虚拟主机。
| 对比维度 | 虚拟主机 | 云服务器(自建虚拟主机) |
|---|---|---|
| 资源隔离 | 共享,受邻居影响 | 独立,可自定义分配 |
| 管理权限 | 无root权限,只能操作网站文件 | 完整root权限,可配置任何软件 |
| 适用场景 | 个人博客、小型企业官网 | 需要高并发、自定义环境、多个站点 |
| 价格 | 较低,通常几十到几百元/年 | 较高,按配置付费,但可弹性扩展 |
| 技术要求 | 低,只需上传文件 | 较高,需掌握Linux和Web服务器配置 |
虚拟主机适合什么网站?如果只是展示型页面,日流量几百到几千,预算有限,用虚拟主机更省心,但如果你需要运行多个站点,或者想在一台服务器上创建虚拟主机来隔离项目,云服务器配合虚拟主机配置是更灵活的选择,据统计,相当一部分开发者在业务初期选择云服务器自建虚拟主机,因为成本可控且后期迁移方便。
虚拟主机常见问题解答
虚拟主机怎么设置更安全?
每个站点用独立的系统用户和目录,避免跨站访问,在Apache中可以使用`MPM ITK`模块,Nginx可以通过`php-fpm`池隔离,同时定期检查日志,关闭不必要的模块。
创建虚拟主机时需要配置SSL吗?
建议部署,使用Let’s Encrypt免费证书,在Nginx或Apache中配置SSL虚拟主机,确保数据传输加密,步骤类似,只需在配置文件中增加`listen 443 ssl`和证书路径。
虚拟主机配置后无法访问,可能是什么原因?
先检查域名解析是否指向服务器IP,再确认服务器防火墙放行了80/443端口,然后查看Web服务器错误日志,常见原因包括目录权限不足、配置文件语法错误、或者默认站点未禁用导致冲突。
创建虚拟主机本质上是配置文件的管理,掌握后就能在一台服务器上灵活承载多个项目,无论是新手建站还是业务扩展,这都是值得投入时间掌握的技能。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/519975.html



