16. 配置Apache虚拟站点
16. 配置Apache虚拟站点
什么是虚拟站点
虚拟站点是在一台物理服务器上通过配置,运行多个网站的技术。每个虚拟站点都有自己独立的域名(或IP地址加端口号),对于访问者来说,就好像这些网站是分别运行在不同的服务器上一样。例如,一台服务器可以同时运行多个企业的网站,如企业A的网站(www.companyA.com)和企业B的网站(www.companyB.com),它们共享服务器的硬件资源,但在用户访问时表现为完全独立的站点。
为何使用虚拟站点
- 资源利用率高:充分利用服务器的硬件资源,降低服务器硬件成本。多个网站共用一台服务器,避免了为每个网站单独配置服务器造成的资源浪费。
- 管理方便:便于网站的管理和维护。管理员可以在同一台服务器上对多个虚拟站点进行集中管理,如更新软件、配置服务器等操作,提高管理效率。
- 灵活性强:可以快速部署新的网站。当有新的网站需求时,只需在服务器上进行简单的配置,即可创建新的虚拟站点,无需额外购置服务器设备。
Apache实现多站点的方式
- 基于IP地址
- 基于端口
- 基于域名(重点)
基于IP地址
为服务器配置多个 IP 地址,每个 IP 地址对应一个不同的网站。当客户端请求访问某个 IP 地址时,Apache 服务器根据请求的 IP 地址来确定要提供服务的网站。这是一种比较直观的方式,通过将不同的 IP 绑定到不同的虚拟主机配置段,来区分不同的站点。
- 优点:
安全性较高,不同的 IP 地址可以在网络层面进行严格的访问控制,例如通过防火墙规则对每个 IP 进行单独的访问限制。
配置相对简单直接,容易理解和维护,尤其适用于对网络架构有清晰划分的环境。 - 缺点:
需要多个 IP 地址,在 IP 资源有限的情况下可能会受到限制。并且获取和管理多个 IP 地址可能会增加成本,如在某些云服务提供商中,每个额外的 IP 地址可能会收取一定的费用。
扩展性较差,当需要添加大量站点时,管理众多 IP 地址会变得复杂。
基于端口
一个服务器的 IP 地址可以有多个端口,通过为不同的网站配置不同的端口号,客户端在访问服务器时通过指定不同的端口来访问不同的网站。Apache 根据请求的端口号来区分应该提供服务的网站内容。例如,一个网站可以配置在端口 80,另一个在端口 8080 等。
- 优点:
可以在一个 IP 地址上实现多个站点,节省 IP 资源。对于内部测试环境或资源有限的服务器来说,这是一种比较经济的方式。
配置相对灵活,容易修改端口号来调整站点配置,不需要像基于 IP 地址那样涉及网络层的变更。 - 缺点:
对于用户来说,访问非标准端口(如不是 80 或 443)的网站时,需要在 URL 中明确指定端口号,这可能会给用户带来不便,并且看起来不太专业。
安全性方面,开放过多的端口可能会增加服务器受到攻击的风险,需要更严格的端口安全管理。
基于域名实现 Apache 多站点(重点)
多个域名解析到同一个服务器 IP 地址,Apache 通过客户端请求中的Host头信息来区分不同的网站。当客户端发送请求时,请求头中的Host字段包含了要访问的域名,Apache 根据这个域名来查找对应的虚拟主机配置,从而提供相应的网站内容。
- 优点:
是最常用的多站点配置方式,方便用户记忆和访问网站,用户只需要使用正常的域名进行访问,不需要额外记住端口号或特殊的 IP 地址。
可以很好地利用服务器资源,在一个 IP 地址上承载多个域名对应的网站,成本效益高。
对于网站所有者来说,可以方便地管理多个域名对应的网站内容,通过修改 Apache 配置文件中的虚拟主机配置,就可以灵活调整网站的服务。 - 缺点:
对域名解析服务有依赖,如果域名解析出现问题(如 DNS 服务器故障、域名过期等),用户将无法正常访问网站。
配置相对复杂一些,特别是在处理多个域名和 SSL 证书(如果需要使用 https 访问)时,需要仔细配置虚拟主机和证书相关的内容,以确保每个域名的安全性和正确性。
实验一:配置基于端口虚拟站点
环境要求
A机器:正确配置IP地址,静态;正确配置本地yum源;已安装Apache。
创建虚拟站点目录及文件
为两个不同端口对应的虚拟站点分别搭建目录结构与首页文件:
mkdir -p /var/www/port8080site
echo "<html><body><h1>这是端口为 8080 的站点</h1></body></html>" > /var/www/port8080site/index.html
mkdir -p /var/www/port8081site
echo "<html><body><h1>这是端口为 8081 的站点</h1></body></html>" > /var/www/port8081site/index.html
以上操作创建了两个站点目录,各自生成简易 HTML 页面,方便后续验证站点访问效果。
配置 Apache 虚拟主机
编辑 Apache 的配置文件,CentOS 7 中默认配置文件位于 /etc/httpd/conf/httpd.conf,推荐在 /etc/httpd/conf.d/ 目录下新建独立配置文件,例如 ports_vhosts.conf,添加如下内容:
<VirtualHost *:8080>
DocumentRoot /var/www/port8080site
ServerName port8080site.com
ErrorLog /var/log/httpd/port8080site_error.log
CustomLog /var/log/httpd/port8080site_access.log combined
</VirtualHost>
<VirtualHost *:8081>
DocumentRoot /var/www/port8081site
ServerName port8081site.com
ErrorLog /var/log/httpd/port8081site_error.log
CustomLog /var/log/httpd/port8081site_access.log combined
</VirtualHost>
这里 <VirtualHost> 标签明确指定不同的端口号,DocumentRoot 指向对应站点文件存放目录,ServerName 设定站点域名(本地测试阶段可灵活取值),ErrorLog 与 CustomLog 用于记录站点运行时的错误与访问日志。
关闭防火墙重启apache服务
略
实验二:配置基于域名的虚拟站点
环境要求
A机器:正确配置IP地址,静态,DNS指向自己;正确配置本地yum源;已安装Apache。
真机:DNS指向A机器**;**
配置DNS服务
参考配置DNS服务
- 要求创建xiandai.com域
- 主机siteA.xiandai.com指向自己
- 主机siteB.xiandai.com指向自己
创建虚拟站点目录及文件
mkdir -p /var/www/siteA
echo "<html><body><h1>Welcome to Site A!</h1></body></html>" > /var/www/siteA/index.html
mkdir -p /var/www/siteB
echo "<html><body><h1>Welcome to Site B!</h1></body></html>" > /var/www/siteB/index.html
配置 Apache 虚拟主机
编辑 Apache 的配置文件,CentOS 7 中默认配置文件位于 /etc/httpd/conf/httpd.conf,推荐在 /etc/httpd/conf.d/ 目录下新建独立配置文件,添加如下内容:
<VirtualHost *:80>
DocumentRoot /var/www/siteA
ServerName siteA.xiandai.com
ErrorLog /var/log/httpd/siteA_error.log
CustomLog /var/log/httpd/siteA_access.log combined
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /var/www/siteB
ServerName siteB.xiandai.com
ErrorLog /var/log/httpd/siteB_error.log
CustomLog /var/log/httpd/siteB_access.log combined
</VirtualHost>
这里 <VirtualHost> 标签明确指定不同的端口号,DocumentRoot 指向对应站点文件存放目录,ServerName 设定站点域名(本地测试阶段可灵活取值),ErrorLog 与 CustomLog 用于记录站点运行时的错误与访问日志。
关闭防火墙重启apache服务
略