Apache HTTP Server 2.4 配置虚拟主机详解
海外云服务器 40个地区可选 亚太云服务器 香港 日本 韩国
云虚拟主机 个人和企业网站的理想选择 俄罗斯电商外贸虚拟主机 赠送SSL证书
美国云虚拟主机 助力出海企业低成本上云 WAF网站防火墙 为您的业务网站保驾护航
Apache HTTP Server(简称 Apache)是目前全球最流行的 Web 服务器软件之一,它以高度的可配置性、良好的稳定性以及对多种操作系统的广泛支持,深受开发者和系统管理员的喜爱,在 Apache 的众多功能中,虚拟主机(Virtual Host) 是其最常用、最核心的功能之一,通过虚拟主机功能,用户可以在同一台物理服务器上托管多个网站,每个网站拥有独立的域名和内容目录,Apache 2.4 版本在虚拟主机配置方面进一步优化,提供了更灵活和安全的配置方式,本文将详细讲解如何在 Apache 2.4 中配置虚拟主机,涵盖基于名称、IP 和端口的三种常见类型。
虚拟主机是 Web 服务器的一项核心功能,允许在单一服务器上运行多个网站,从而提升服务器资源的利用率,根据实现方式的不同,虚拟主机主要分为以下三种类型:
-
基于名称的虚拟主机(Name-based Virtual Hosts)
使用相同的 IP 地址和端口,通过客户端请求中的Host
头信息来识别不同的网站,这种模式适用于共享 IP 地址的场景,是目前最常见的方式。 -
基于 IP 的虚拟主机(IP-based Virtual Hosts)
每个网站绑定不同的 IP 地址,服务器根据请求的目标 IP 来选择对应的网站,适用于每个网站拥有独立 IP 的场景,但需要较多的 IP 资源。 -
基于端口的虚拟主机(Port-based Virtual Hosts)
使用相同的 IP 地址但不同的端口来区分网站,网站 A 使用 80 端口,网站 B 使用 8080 端口,这种方式适用于特定服务或测试环境。
在实际部署中,基于名称的虚拟主机 最为普遍,因为它不仅节省了 IP 资源,而且配置简单,适合大多数中小型网站的托管需求。
配置前的准备
在开始配置虚拟主机之前,请确保已完成以下准备工作:
-
Apache 2.4 已正确安装
可以使用以下命令检查 Apache 是否已安装:httpd -v
如果未安装,可使用包管理器进行安装(以 CentOS 为例):
sudo yum install httpd
-
确认虚拟主机功能已启用
Apache 的主配置文件通常位于/etc/httpd/conf/httpd.conf
(CentOS)或/etc/apache2/apache2.conf
(Ubuntu),在 Apache 2.4 及以上版本中,NameVirtualHost
指令已被弃用,只需在<VirtualHost>
块中正确设置ServerName
和ServerAlias
即可启用基于名称的虚拟主机。 -
准备网站内容目录
为每个虚拟主机创建独立的内容目录,sudo mkdir -p /var/www/example.com/public_html sudo mkdir -p /var/www/test.com/public_html
然后在每个目录中创建测试页面:
<h1>Welcome to example.com</h1>
配置基于名称的虚拟主机
创建虚拟主机配置文件
推荐将虚拟主机的配置独立存放,以便维护和管理,以 CentOS 为例,可以在 /etc/httpd/conf.d/
目录下创建配置文件:
sudo vi /etc/httpd/conf.d/example.com.conf
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot "/var/www/example.com/public_html" <Directory "/var/www/example.com/public_html"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
再为另一个网站创建配置文件:
sudo vi /etc/httpd/conf.d/test.com.conf
<VirtualHost *:80> ServerName test.com ServerAlias www.test.com DocumentRoot "/var/www/test.com/public_html" <Directory "/var/www/test.com/public_html"> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
配置本地 Hosts 文件进行测试
如果尚未配置 DNS 解析,可以在本地主机的 hosts
文件中添加如下内容(以 Windows 为例,路径为 C:\Windows\System32\drivers\etc\hosts
;Linux/Mac 为 /etc/hosts
):
0.0.1 example.com
127.0.0.1 test.com
这样在浏览器中访问 http://example.com
和 http://test.com
即可测试虚拟主机配置是否生效。
重启 Apache 服务
配置完成后,重启 Apache 服务以加载新的配置:
sudo systemctl restart httpd
配置基于 IP 的虚拟主机
基于 IP 的虚拟主机适用于服务器拥有多个 IP 地址的情况,以下是一个简单示例:
假设服务器有两个 IP 地址:168.1.100
和 168.1.101
,则配置如下:
sudo yum install httpd0
注意:必须确保服务器网卡已正确绑定多个 IP 地址,否则配置将无法生效。
配置基于端口的虚拟主机
若需在同一 IP 上使用不同端口区分网站,可以配置基于端口的虚拟主机,示例如下:
sudo yum install httpd1
需在主配置文件中启用监听 8080 端口:
sudo yum install httpd2
访问时使用 http://example.com:8080
即可看到不同内容。