Linux下配置虚拟主机及创建site1测试页面
在Linux系统中配置Web服务器虚拟主机时,首先需要为独立站点创建专属目录,site1”,随后,在该目录下写入一个基础的测试页面(如index.html),用于后续验证虚拟主机配置是否生效,这一系列操作是Apache或Nginx等多站点部署的基础步骤,旨在通过将不同域名映射到对应目录,实现多个网站在同一台服务器上的独立运行与访问测试。
从零开始:如何在Linux系统中建立Web虚拟主机
在当今的互联网时代,服务器资源的高效利用变得至关重要,如果你有一台Linux服务器,并且希望在上面运行多个网站(例如个人博客、企业官网、测试环境等),你不需要为每个网站单独购买一台服务器,通过在Linux上建立“虚拟主机”,你可以让一台服务器、一个IP地址同时承载多个域名。
本文将以最主流的Web服务器软件Apache和Nginx为例,手把手教你如何在Linux系统中建立虚拟主机。
理解虚拟主机的原理
虚拟主机的核心原理是:当用户通过浏览器访问服务器时,Web服务器会检查HTTP请求头中的“Host”字段(即用户访问的域名),然后将请求转发到与该域名匹配的网站目录中,最后把对应的网页内容返回给用户。
常见的虚拟主机分为两种:
- 基于名称的虚拟主机:最常用的方式,多个域名解析到同一个IP地址,服务器通过域名区分不同网站。
- 基于IP的虚拟主机:服务器有多个IP地址,每个网站绑定不同的IP,由于IPv4资源紧张,这种方式较少用于个人或中小企业。
本文重点介绍基于名称的虚拟主机。
前期准备工作
在开始配置之前,你需要准备以下内容:
- 一台安装了Linux系统的服务器(本文以Ubuntu/Debian和CentOS/RHEL系统为例)。
- 拥有服务器的
root或sudo权限。 - 拥有一个或多个域名,并将域名的A记录解析到你服务器的IP地址。
在Apache中建立虚拟主机
Apache是全球使用最广泛的Web服务器之一,配置起来非常直观。
安装Apache
在Ubuntu/Debian系统上:
sudo apt update sudo apt install apache2 -y
创建网站目录和测试页面
假设我们要建立两个网站:site1.com 和 site2.com,我们为它们分别创建目录并写入测试HTML文件。
echo "<h1>Welcome to Site 1</h1>" | sudo tee /var/www/site1.com/public_html/index.html # 创建site2目录并写入测试页面 sudo mkdir -p /var/www/site2.com/public_html echo "<h1>Welcome to Site 2</h1>" | sudo tee /var/www/site2.com/public_html/index.html
为了确保Apache能正常读取这些文件,我们需要修改目录权限:
sudo chown -R www-data:www-data /var/www/site1.com/public_html sudo chown -R www-data:www-data /var/www/site2.com/public_html
创建虚拟主机配置文件
Apache在Ubuntu下的配置文件通常存放在 /etc/apache2/sites-available/ 目录中。
复制默认配置文件并创建site1的配置:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/site1.com.conf
编辑 site1.com.conf:
sudo nano /etc/apache2/sites-available/site1.com.conf
<VirtualHost *:80>
ServerAdmin webmaster@site1.com
ServerName site1.com
ServerAlias www.site1.com
DocumentRoot /var/www/site1.com/public_html
ErrorLog ${APACHE_LOG_DIR}/site1_error.log
CustomLog ${APACHE_LOG_DIR}/site1_access.log combined
</VirtualHost>
保存并退出,用同样的方法创建并配置 site2.com.conf,把里面的域名和目录替换为site2的相关信息。
启用虚拟主机并重启服务
使用 a2ensite 工具启用刚刚创建的站点:
sudo a2ensite site1.com.conf sudo a2ensite site2.com.conf
为了保险起见,禁用默认站点:
sudo a2dissite 000-default.conf
测试配置语法并重启Apache:
sudo apache2ctl configtest sudo systemctl restart apache2
在Nginx中建立虚拟主机
Nginx以高性能和低内存消耗著称,是近年来最受欢迎的Web服务器,在Nginx中,虚拟主机被称为“Server Blocks”。
安装Nginx
在Ubuntu/Debian系统上:
sudo apt update sudo apt install nginx -y
创建网站目录和测试页面
(如果之前在Apache部分已经创建过,可跳过此步)
sudo mkdir -p /var/www/site1.com/html sudo mkdir -p /var/www/site2.com/html echo "<h1>Welcome to Site 1 (Nginx)</h1>" | sudo tee /var/www/site1.com/html/index.html echo "<h1>Welcome to Site 2 (Nginx)</h1>" | sudo tee /var/www/site2.com/html/index.html sudo chown -R www-data:www-data /var/www/site1.com/html sudo chown -R www-data:www-data /var/www/site2.com/html
创建虚拟主机配置文件
Nginx的配置文件通常存放在 /etc/nginx/sites-available/(CentOS可能在 /etc/nginx/conf.d/)。
创建site1的配置文件:
sudo nano /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;
location / {
try_files $uri $uri/ =404;
}
error_log /var/log/nginx/site1_error.log;
access_log /var/log/nginx/site1_access.log;
}
保存并退出,同样地,为 site2.com 创建类似的配置文件,替换相关域名和目录路径。
建立软链接并重启服务
Nginx需要将配置文件软链接到 sites-enabled 目录才会生效:
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/
测试Nginx配置语法是否正确:
sudo nginx -t
如果输出 syntax is ok 和 test is successful,说明配置无误,重启Nginx:
sudo systemctl restart nginx
本地测试(可选)
如果你还没有正式解析域名,可以通过修改本地电脑的 hosts 文件来进行测试。
- Windows系统:编辑
C:\Windows\System32\drivers\etc\hosts - Linux/Mac系统:编辑
/etc/hosts
在文件末尾添加:
你的服务器IP地址 site1.com www.site1.com 你的服务器IP地址 site2.com www.site2.com
保存后,在浏览器中分别访问 site1.com 和 site2.com,如果看到对应的欢迎页面,说明Linux虚拟主机配置大功告成!
在Linux上建立虚拟主机并不复杂,无论是选择Apache的<VirtualHost>还是Nginx的server块,核心思路都是:建立目录 -> 编写配置文件指定域名和目录 -> 启用配置 -> 重启Web服务。
最后提醒几点生产环境的最佳实践:
- 开启HTTPS:配置好虚拟主机后,强烈建议使用Let's Encrypt免费SSL证书为网站开启HTTPS。
- 配置防火墙:确保服务器的80(HTTP)和443(HTTPS)端口已在防火墙(如UFW或Firewalld)中放行。
- 日志管理:正如配置文件中所写,为每个虚拟主机单独配置日志文件,这对于排查网站故障和流量分析非常重要。

