在Linux系统中,基于域名的虚拟主机是一种常见的网站部署方式,它允许通过同一台服务器托管多个域名,每个域名访问独立的网站内容,这种方式不仅节省服务器资源,还能提高管理效率,本文将详细介绍如何在Linux环境下(以Apache和Nginx为例)建立基于域名的虚拟主机。

准备工作
在开始配置前,需要确保以下条件已满足:
- 服务器环境:已安装Linux操作系统(如Ubuntu、CentOS等),并配置好静态IP地址。
- Web服务:根据需求安装Apache或Nginx,在Ubuntu中可通过
sudo apt install apache2安装Apache,或sudo apt install nginx安装Nginx。 - 域名解析:将需要绑定的域名解析到服务器的公网IP地址,可通过域名提供商的管理后台设置A记录,确保DNS生效后可通过
ping命令验证。 - 目录权限:为每个域名创建独立的网站目录,并设置正确的文件所有者权限,使用
sudo mkdir -p /var/www/domain1.com/html,并通过sudo chown -R $USER:$USER /var/www/domain1.com/html赋予当前用户权限。
基于Apache的虚拟主机配置
Apache通过虚拟主机文件实现多域名支持,默认配置文件位于/etc/apache2/sites-available/目录下。
创建虚拟主机文件
为每个域名创建独立的配置文件,例如domain1.com.conf如下:
<VirtualHost *:80>
ServerAdmin admin@domain1.com
ServerName domain1.com
ServerAlias www.domain1.com
DocumentRoot /var/www/domain1.com/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
ServerName:主域名。ServerAlias:附加的域名(如带www的子域名)。DocumentRoot:网站根目录。
启用虚拟主机
使用a2ensite命令启用配置文件,
sudo a2ensite domain1.com.conf
然后禁用默认站点(可选):

sudo a2dissite 000-default.conf
重启Apache服务
sudo systemctl restart apache2
配置完成后,访问http://domain1.com即可看到对应网站内容。
基于Nginx的虚拟主机配置
Nginx的虚拟主机配置文件通常位于/etc/nginx/sites-available/目录下,与Apache类似,需为每个域名创建独立配置。
创建虚拟主机文件
例如domain1.com.conf如下:
server {
listen 80;
server_name domain1.com www.domain1.com;
root /var/www/domain1.com/html;
index index.html index.htm;
location / {
try_files $uri $uri/ =404;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
listen:监听的端口号。server_name:绑定的域名。root:网站根目录。
启用虚拟主机
创建符号链接到sites-enabled目录:
sudo ln -s /etc/nginx/sites-available/domain1.com.conf /etc/nginx/sites-enabled/
测试并重启Nginx
sudo nginx -t sudo systemctl restart nginx
若配置正确,访问域名即可显示对应网站。

HTTPS配置(可选)
为提升安全性,建议为虚拟主机配置SSL证书,可通过Let's Encrypt免费获取证书:
- 安装Certbot:
sudo apt install certbot python3-certbot-apache # Apache sudo apt install certbot python3-certbot-nginx # Nginx
- 获取证书并自动配置:
sudo certbot --apache -d domain1.com -d www.domain1.com # Apache sudo certbot --nginx -d domain1.com -d www.domain1.com # Nginx
Certbot会自动修改虚拟主机配置,启用HTTPS并重定向HTTP到HTTPS。
常见问题与优化
- 权限问题:确保网站目录权限正确,可通过
chmod -R 755 /var/www/domain1.com/html设置。 - 配置文件语法错误:使用
apache2ctl configtest(Apache)或nginx -t(Nginx)检查语法。 - 日志管理:定期清理或分割日志文件,避免占用过多磁盘空间。
FAQs
Q1: 如何在虚拟主机中配置子域名?
A1: 在虚拟主机配置文件中添加ServerAlias指令,例如ServerAlias sub.domain1.com,并确保子域名的DNS解析指向服务器IP,重启Web服务后即可通过子域名访问。
Q2: 虚拟主机访问时出现403错误如何解决?
A2: 403错误通常由权限问题或目录配置错误引起,检查步骤如下:
- 确认网站目录所有者与Web运行用户一致(如Nginx默认为
www-data)。 - 检查目录权限是否为755,文件权限为644。
- 确认
DocumentRoot路径正确且存在默认首页文件(如index.html)。 - 检查SELinux或防火墙是否阻止访问。