Apache 配置虚拟 Web 主机——基于域名、IP、端口号
一、虚拟 Web 主机概述
- 在同一台服务器上运行多个 Web 站点,每个站点不独立占用整个服务器,能够充分利用服务器硬件资源,降低网站构建及运行成本。
三种类型的虚拟 Web 主机:
- 基于域名(网站使用不同的域名,相同的 IP 地址,需要 DNS 服务器支持,最广泛、最普遍的虚拟主机)
- 基于IP地址(使用不同的域名对应不同的 IP,需要服务器配备多个网卡接口,应用不广泛)
- 基于端口(不使用域名,使用相同的 IP 地址不同的 TCP 端口号,用户访问时必须指定网站的端口号)
二、构建基于域名的虚拟主机
准备工作:
主机 |
操作系统 |
IP地址 |
Apache |
CentOS7 |
192.168.1.1 |
客户机 |
Win7 |
192.168.1.2 |
1.安装 DNS 并配置主配置文件
[root@Apache ~]# yum -y install bind bind-utils #安装dns软件包和nslookup软件包
[root@Apache ~]# vim /etc/named.conf #编辑DNS主配置文件


2.添加区域配置文件
[root@Apache ~]# cd /var/named/
[root@Apache named]# ls
[root@Apache named]# cp named.localhost baidu #将模板文件复制到baidu里
[root@Apache named]# cp named.localhost sina #将模板文件复制到sina里

编辑 baidu 配置文件:
[root@Apache named]# vim baidu

编辑 sina 配置文件:
[root@Apache named]# vim sina

设置 baidu、sina 的属主和属组为 named,不然无法解析:
[root@Apache named]# chown named:named baidu
[root@Apache named]# chown named:named sina
[root@Apache named]# systemctl restart named #重启DNS服务

3.验证 DNS 能否正常解析

4.为两个网站准备网页文档,并写入数据方便查看
[root@Apache ~]# mkdir /usr/local/httpd/htdocs/baidu
[root@Apache ~]# mkdir /usr/local/httpd/htdocs/sina
[root@Apache ~]# echo "<h1>Welcome To baidu666</h1>" > /usr/local/httpd/htdocs/baidu/index.html
[root@Apache ~]# echo "<h1>Welcome To sina888</h1>" > /usr/local/httpd/htdocs/baidu/index.html

5.添加虚拟主机支持
[root@Apache ~]# vim /usr/local/httpd/conf/httpd.conf

6.修改独立配置文件
[root@Apache ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

[root@Apache ~]# systemctl restart httpd #重启httpd服务
7.使用客户机访问验证


三、Apache 访问控制
Apache 访问控制可以更好地控制对网站资源的访问,为特定的网站目录添加访问授权;常见的方式有客户机地址限制、用户授权限制两种范围控制方式。
1.用户授权限制
Apache 提供了认证(Authentication)与授权(Authorization)机制,当用户访问使用此机制控制的目录时,会提示用户输入用户名和密码,只有输入正确的用户名和密码的主机才可以访问该资源。
1)先创建用户认证数据文件
[root@Apache ~]# htpasswd -c /usr/local/httpd/conf/.awspwd zhangsan
[root@Apache ~]# cat /usr/local/httpd/conf/.awspwd

2)添加用户授权配置
- 因为启用了虚拟 Web 主机,所以要到虚拟主机 Web 配置文件中设置。
- 用户授权限制就是访问网站时需要输入用户名跟密码。
[root@Apache ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

3)重启 httpd 服务
[root@Apache ~]# systemctl restart httpd #重启httpd服务
[root@Apache ~]# netstat -anpt | grep 80 #查看端口是否开启

4)使用客户机访问验证:


2.客户机地址限制
通过 Require 配置项,可以根据客户端的主机名或 IP 地址来决定是否允许客户端访问。可用于< Location >、< Directory >、< Files >、< Limit >配置段中
,使用 Require 配置项时,需要设置客户端地址以构成完整的限制策略,地址形式可以是 IP 地址、网络地址、主机名或域名。当 Require 配置项之后为"all"时,表示匹配任意地址。
Require配置项的常见语法:
- Require all granted:允许所有主机访问。
- Require all denied:拒绝所有主机访问。
- Require local:仅允许本地主机访问。
- Require [not] host <主机名或域名列表>:允许或拒绝指定主机或域访问。
- Require [not] ip <ip地址或网段列表>:允许或拒绝指定 IP 或网段访问。
注意:
- 使用 not 禁止访问时要将其置于
<RequireAll> </RequireAll>
容器中并在容器中指定相应的限制策略。
- 多个不带 not 的 require 配置语句之间是"或"关系,满足一条即可访问。
- 出现即不带 not 又有带 not 的语句,之间是"与"关系。同时满足所有要求才可以访问。
四、构建基于 IP 的虚拟主机
1.添加一块网卡
[root@Apache ~]# ifconfig ens32:0 192.168.1.188/24
[root@Apache ~]# ifconfig ens32:0

2.修改 sina 区域配置文件
[root@Apache ~]# vim /var/named/sina

重启 DNS 服务,并解析 sina 查看:

3.修改独立的配置文件
[root@Apache ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

4.修改主配置文件,添加虚拟主机支持
[root@Apache ~]# vim /usr/local/httpd/conf/httpd.conf

5.重启 httpd 服务,并查看端口号是否开启
[root@Apache ~]# systemctl restart httpd
[root@Apache ~]# netstat -antp | grep 80

6.使用客户机访问验证


五、构建基于端口的虚拟主机
1.修改主配置文件
[root@Apache ~]# vim /usr/local/httpd/conf/httpd.conf

2.修改独立的配置文件
[root@Apache ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf

3.重启 httpd 服务,并查看端口号是否开启
[root@Apache ~]# systemctl restart httpd
[root@Apache ~]# netstat -anpt | grep httpd

4.使用客户机访问验证

