阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

CentOS 7.4安装配置Apache网站服务和构建虚拟主机

266次阅读
没有评论

共计 7331 个字符,预计需要花费 19 分钟才能阅读完成。

一、Httpd 服务的访问控制

为了更好地控制对网站资源的访问。可以为特定的网站目录添加访问授权。主要分为客户机地址限制和用户授权限制,这两种访问控制方式都应用于 httpd.conf 配置文件中的目录区域范围内。

1、客户机地址限制

通过 Require 配置项,可以根据主机的主机名或 IP 地址来决定是否允许客户端访问。在 httpd 服务器的主配置文件的 <Location>、<Directory>、<Files>、<Limit> 配置段中均可以使用 Require 配置项来控制客户端的访问。地址的形式可以是 IP 地址、网络地址、主机名和域名,使用名称“all”时表示任意地址。限制策略的常用格式如下所示:

  • Require all granted:表示允许所有主机访问。
  • Require all denied:表示拒绝所有主机访问。
  • Require local:表示仅本地主机访问。
  • Require [not] host < 主机名或域名列表 >:表示允许或拒绝指定主机或域访问。
  • Require [not] ip <IP 地址或网段列表 >:表示允许或拒绝指定 IP 地址或网段访问。

定义限制策略时,多个不带 not 的 require 配置语句之间是或的关系,即任意一条 require 配置语句就可以访问,若即有不带 not 的 require 配置语句,又出现了带 not 的 require 配置语句,则语句之间是与的关系,即同时满足所有 require 配置语句才可访问。
具体配置如下:
做一个策略,仅允许 ip 地址为 192.168.100.101 的主机能够访问 /usr/local/httpd/htdocs 网页目录下的内容,则策略如下(进入网站主配置文件 httpd.conf 后,在末行模式下输入 /Directory,按回车键查找到相应的位置):

<Directory "/usr/local/httpd/htdocs">
    ................        <!-- 省略部分内容 -->
    Require ip 192.168.100.101         <!-- 仅允许 192.168.100.101 的主机访问网站服务 -->
</Directory>

配置完成重启服务,192.168.100.101 的客户端就可以访问了。

反之,需要使用“仅拒绝”的限制策略时,灵活使用 Require 与 Require not 配置语句设置拒绝策略,只禁止一部分主机访问。在使用 not 禁止访问时要将其置于 <RequireALL></RequireALL> 容器中,并在容器中指定相应的限制策略。
具体配置如下:

<Directory "/usr/local/httpd/htdocs">
    ................        <!-- 省略部分内容 -->
        <RequireAll>
        Require all granted
    Require  not ip 192.168.100.0/24 192.168.200.0/24         <!-- 拒绝 100.0/24 和 200.0/24 网段访问,允许其他任何主机访问 -->
        </RequireAll>
</Directory>

也可以通过以下方式来限制:

<Directory "/usr/local/httpd/htdocs">
    ................        <!-- 省略部分内容 -->
    Deny from 192.168.100.0/24 192.168.200.0/24         <!-- 拒绝 100.0/24 和 200.0/24 网段访问,允许其他任何主机访问 -->
</Directory>

2、用户授权限制

基于用户的访问控制包含认证和授权两个过程,是 Apache 允许指定用户使用用户名和密码访问特定资源的一种方式。httpd 服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式。使用摘要认证的话需要在编译 http 之前添加“–enable-auth-digest”选项,但并不是所有的浏览器都支持摘要认证,所以不推荐使用;而基本认证是 httpd 服务的基本功能,不需要预先配置特别的选项。

1)创建用户认证数据文件

[root@CentOS01 ~]# /usr/local/httpd/bin/htpasswd -c /usr/local/httpd/htdocs/.password admin  <!--# 使用
htpasswd 工具创建用户,该用户与系统用户无关,.password 文件以. 开头,表示为隐藏目录,该
目录默认不存在,所以要加 - c 选项,在以后需要添加用户时,不能加 - c 选项,否则会覆盖原来的内容 -->
New password:                  <!-- 输入密码 -->
Re-type new password:     <!-- 确认密码 -->
Adding password for user admin        <!-- 提示添加成功 -->

查看用户是否添加:

[root@localhost httpd]# cd /usr/local/httpd/                <!-- 切换至网站安装根目录 -->
[root@localhost httpd]# cat conf/.password
admin:oVc8B0TaIVv0s                   <!-- 用户 admin 的信息 -->

2)修改 Apache 主配置文件加载身份验证

[root@centos01 ~]# vi /usr/local/httpd/conf/httpd.conf      <!-- 编辑主配置文件 -->
.......   <!-- 此处省略部分内容 -->
    AuthName "Default"      <!-- 定义访问域的名字 -->
    AuthType Basic             <!-- 基本身份验证 -->
    AuthuserFile /usr/local/httpd/htdocs/.password        <!-- 验证数据库位置 -->
    Require valid-user         <!-- 经过账户密码验证的合法账户可以访问 -->
</Directory>

3)重启 apache 服务
[root@centos01 ~]# systemctl restart httpd <!– 重启 httpd 服务 –>

客户端访问会出现提示框,输入账户密码就可以访问了,需要注意的是,用户访问授权与主机访问控制同时设置时,设置的主机访问控制优先生效。所以在进行用户授权限制时,需要删除掉其中的 require 语句。要不然,用户访问授权不会生效。

二、构建虚拟 Web 主机

虚拟 Web 主机指的是在同一台服务器中运行多个 Web 站点,其中的每个站点实际上并不独立占用整个服务器,因此被称为“虚拟”Web 主机。通过虚拟 Web 主机服务可以充分利用服务器的硬件资源,从而大大降低网站构建及运行成本。使用 httpd 可以非常方便地构建虚拟主机服务器,只需要运行一个 httpd 服务就能够同时支撑大量的 Web 站点。httpd 支持的虚拟主机类型包括一下三种:

  • 基于域名:为每个虚拟主机使用不同的域名,但是其对应的 IP 地址是相同的。这是使用最为普遍的虚拟 Web 主机类型。
    基于域名:为每个虚拟主机使用不同的域名,但是其对应的 IP 地址是相同的。这是使用最为普遍的虚拟 Web 主机类型。
  • 基于 IP 地址:为每个虚拟主机使用不同的域名,且各自对应的 IP 地址也 不相同。这种方式需要为服务器配备多个网络接口,因此应用并不是非常广泛。
  • 基于端口:为每个虚拟主机使用不同的域名,IP 地址来区分不同的站点内容,而是使用了不同的 TCP 端口号,因此用户在浏览不同的虚拟站点时需要同时指定端口号才能访问。

三、配置基于域名的虚拟主机

DNS 自行搭建,如果有不明白的可以参考博文:CentOS7 简单搭建 DNS 服务
下面不在进行详细的解释。

1、为虚拟主机提供域名解析

[root@centos01 ~]# vi /etc/named.conf         <!-- 编辑主配置文件 -->
options {listen-on port 53 { 192.168.100.10;};
        directory "/var/named";
        allow-query {192.168.100.0/24;};
};
zone "bdqn.com" IN {
        type    master;
        file    "bdqn.com.zone";
};
zone "benet.com" IN {
        type    master;
        file    "benet.com.zone";
};
[root@centos01 ~]# vi /var/named/bdqn.com.zone       <!-- 编辑 bdqn.com 正向解析区域 -->
$TTL    86400
@       SOA     bdqn.com.       root.bdqn.com(
        2019081610
        1H
        15M
        1W
        1D
)
@       NS      centos01.bdqn.com.
centos01 A      192.168.100.10
www      A      192.168.100.10
[root@centos01 ~]# cp /var/named/bdqn.com.zone /var/named/benet.com.zone
[root@centos01 ~]# vi /var/named/benet.com.zone    <!-- 编辑 benet.com 正向解析区域 -->
TTL    86400
@       SOA     benet.com.      root.benet.com(
        2019081610
        1H
        15M
        1W
        1D
)
@       NS      centos01.benet.com.
centos01 A      192.168.100.10
www      A      192.168.100.10

2、编辑网卡

[root@centos01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens32  <!-- 编辑网卡 -->
……            <!—省略部分内容 -->
DNS1=192.168.100.10        <!-- 添加 DNS-->
[root@centos01 ~]# systemctl restart network  <!-- 重启网卡服务 -->
[root@centos01 ~]# systemctl restart named    <!-- 重启 DNS 服务 -->

3、客户端解析域名

CentOS 7.4 安装配置 Apache 网站服务和构建虚拟主机

4、为虚拟机准备网页文档

为每个虚拟 web 主机准备网站目录及网页文档。为了方便测试,分别为每个虚拟 web 主机提供包含不同的首页文件:

[root@centos01 ~]# mkdir -p /var/www/
[root@centos01 ~]# mkdir -p /var/www/bdqn.com
[root@centos01 ~]# mkdir -p /var/www/benet.com
[root@centos01 ~]# echo "www.bdqn.com" > /var/www/bdqn.com/index.html
[root@centos01 ~]# echo "www.benet.com" > /var/www/benet.com/index.html

5、修改主配置文件支持虚拟主机

[root@centos01 ~]# vi /usr/local/httpd/conf/httpd.conf   <!-- 编辑主配置文件 -->
    390 # Virtual hosts
391 Include conf/extra/httpd-vhosts.conf             <!-- 删除该行前面的 #号 -->

6、修改虚拟主机访问权限

[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf  <!-- 创建独立的配置文件 -->
NameVirtualHost 192.168.100.10:8  <!-- 虚拟主机监听的 IP 地址,默认是 * 表示监听所有 -->
<Directory "/var/www/">            <!-- 虚拟站点根目录 -->
        order deny,allow                <!-- 先拒绝后允许访问 -->
        allow from all                     <!-- 允许所有人访问 -->
</Directory>

7、配置基于域名的虚拟主机

[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf 
NamevirtualHost www.bdqn.com:80    <!-- 监听域名 -->
NamevirtualHost www.benet.com:80   <!-- 监听域名 -->
<Directory "/var/www/">
        order deny,allow
        allow from all
</Directory>

<VirtualHost 192.168.100.10:80>     <!-- 虚拟主机 IP 地址和端口号 -->
        DocumentRoot "/var/www/bdqn.com/"       <!-- 网站根目录位置 -->
        ServerName www.bdqn.com                     <!-- 网站域名 -->
        ErrorLog "logs/www.bdqn.com.error_log"  <!-- 错误日志 -->
        CustomLog "logs/www.bdqn.com.access_log" common        <!-- 访问日志 -->
</VirtualHost>
<VirtualHost 192.168.100.10:80>           <!-- 参考以上注释 -->
        DocumentRoot "/var/www/benet.com/"
        ServerName www.benet.com
        ErrorLog "logs/www.benet.com.error_log"
        CustomLog "logs/www.benet.com.access_log" common
</VirtualHost>
[root@centos01 ~]# systemctl restart httpd  <!-- 重启 httpd 服务 -->

8、客户端访问验证

CentOS 7.4 安装配置 Apache 网站服务和构建虚拟主机

CentOS 7.4 安装配置 Apache 网站服务和构建虚拟主机

四、配置基于 IP 地址的虚拟主机

1、复制一个新的网卡

[root@centos01 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-ens32:1
[root@centos01 network-scripts]# vim ifcfg-ens32:1   <!-- 编辑 32:1 网卡 -->
......                       <!-- 此处省略部分内容 -->
NAME=ens32:1      <!-- 修改名字 -->
DEVICE=ens32:1    <!-- 修改名字 -->
ONBOOT=yes
IPADDR=192.168.100.20            <!-- 编辑 IP 地址 -->
NATEMASK=255.255.255.0
DNS1=192.168.100.10                <!-- 添加 DNS-->
[root@centos01 ~]# systemctl restart network           <!-- 重启网卡服务 -->

2、配置基于 IP 地址的虚拟主机

[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf    <!-- 创建独立配置文件 -->
NamevirtualHost www.bdqn.com:80        
NamevirtualHost www.benet.com:80             
<Directory "/var/www/">
        order deny,allow
        allow from all
</Directory>

<VirtualHost 192.168.100.10:80>            <!--bdqn.com 是 192.168.100.10-->
        DocumentRoot "/var/www/bdqn.com/"
        ServerName www.bdqn.com
        ErrorLog "logs/www.bdqn.com.error_log"
        CustomLog "logs/www.bdqn.com.access_log" common
</VirtualHost>
<VirtualHost 192.168.100.20:80>        <!--benet.com 是 192.168.100.20-->
        DocumentRoot "/var/www/benet.com/"
        ServerName www.benet.com
        ErrorLog "logs/www.benet.com.error_log"
        CustomLog "logs/www.benet.com.access_log" common
</VirtualHost>
[root@centos01 ~]# systemctl restart httpd           <!-- 重启 Httpd 服务 -->

3、客户端访问验证

CentOS 7.4 安装配置 Apache 网站服务和构建虚拟主机

CentOS 7.4 安装配置 Apache 网站服务和构建虚拟主机

五、配置基于端口号的虚拟主机

1、修改 Apache 主配置文件

[root@centos01 ~]# vi /usr/local/httpd/conf/httpd.conf  <!- 编辑主配置文件 -->
     40 Listen 80
     41 Listen 8080   <!-- 添加 8080 端口号 -->

2、配置基于端口的虚拟主机

[root@centos01 ~]# vim /usr/local/httpd/conf/extra/httpd-vhosts.conf    <!-- 创建独立配置文件 -->
NamevirtualHost www.bdqn.com:80
NamevirtualHost www.benet.com:80
<Directory "/var/www/">
        order deny,allow
        allow from all
</Directory>

<VirtualHost 192.168.100.10:80>    <!--bdqn.com 是 80 端口 -->
        DocumentRoot "/var/www/bdqn.com/"
        ServerName www.bdqn.com
        ErrorLog "logs/www.bdqn.com.error_log"
        CustomLog "logs/www.bdqn.com.access_log" common
</VirtualHost>
<VirtualHost 192.168.100.10:8080>        <!--benet.com 是 8080 端口 -->
        DocumentRoot "/var/www/benet.com/"
        ServerName www.benet.com
        ErrorLog "logs/www.benet.com.error_log"
        CustomLog "logs/www.benet.com.access_log" common
</VirtualHost>
[root@centos01 ~]# systemctl restart httpd  <!-- 重启 httpd 服务 -->

3、客户端访问验证

CentOS 7.4 安装配置 Apache 网站服务和构建虚拟主机

CentOS 7.4 安装配置 Apache 网站服务和构建虚拟主机

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计7331字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中