Linux下配置虚拟主机及创建site1测试页面

2026-09-02 10:18:45 69阅读
在Linux系统中配置Web服务器虚拟主机时,首先需要为独立站点创建专属目录,site1”,随后,在该目录下写入一个基础的测试页面(如index.html),用于后续验证虚拟主机配置是否生效,这一系列操作是Apache或Nginx等多站点部署的基础步骤,旨在通过将不同域名映射到对应目录,实现多个网站在同一台服务器上的独立运行与访问测试。

从零开始:如何在Linux系统中建立Web虚拟主机

在当今的互联网时代,服务器资源的高效利用变得至关重要,如果你有一台Linux服务器,并且希望在上面运行多个网站(例如个人博客、企业官网、测试环境等),你不需要为每个网站单独购买一台服务器,通过在Linux上建立“虚拟主机”,你可以让一台服务器、一个IP地址同时承载多个域名。

Linux下配置虚拟主机及创建site1测试页面

本文将以最主流的Web服务器软件Apache和Nginx为例,手把手教你如何在Linux系统中建立虚拟主机。

理解虚拟主机的原理

虚拟主机的核心原理是:当用户通过浏览器访问服务器时,Web服务器会检查HTTP请求头中的“Host”字段(即用户访问的域名),然后将请求转发到与该域名匹配的网站目录中,最后把对应的网页内容返回给用户。

常见的虚拟主机分为两种:

  1. 基于名称的虚拟主机:最常用的方式,多个域名解析到同一个IP地址,服务器通过域名区分不同网站。
  2. 基于IP的虚拟主机:服务器有多个IP地址,每个网站绑定不同的IP,由于IPv4资源紧张,这种方式较少用于个人或中小企业。

本文重点介绍基于名称的虚拟主机


前期准备工作

在开始配置之前,你需要准备以下内容:

  1. 一台安装了Linux系统的服务器(本文以Ubuntu/Debian和CentOS/RHEL系统为例)。
  2. 拥有服务器的rootsudo权限。
  3. 拥有一个或多个域名,并将域名的A记录解析到你服务器的IP地址。

在Apache中建立虚拟主机

Apache是全球使用最广泛的Web服务器之一,配置起来非常直观。

安装Apache

在Ubuntu/Debian系统上:

sudo apt update
sudo apt install apache2 -y

创建网站目录和测试页面

假设我们要建立两个网站:site1.comsite2.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 oktest 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.comsite2.com,如果看到对应的欢迎页面,说明Linux虚拟主机配置大功告成!

在Linux上建立虚拟主机并不复杂,无论是选择Apache的<VirtualHost>还是Nginx的server块,核心思路都是:建立目录 -> 编写配置文件指定域名和目录 -> 启用配置 -> 重启Web服务

最后提醒几点生产环境的最佳实践:

  1. 开启HTTPS:配置好虚拟主机后,强烈建议使用Let's Encrypt免费SSL证书为网站开启HTTPS。
  2. 配置防火墙:确保服务器的80(HTTP)和443(HTTPS)端口已在防火墙(如UFW或Firewalld)中放行。
  3. 日志管理:正如配置文件中所写,为每个虚拟主机单独配置日志文件,这对于排查网站故障和流量分析非常重要。

文章版权声明:除非注明,否则均为亚朵原创文章,转载或复制请以超链接形式并注明出处。