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

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

481次阅读
没有评论

共计 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、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7978964
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

4盘位、4K输出、J3455、遥控,NAS硬件入门性价比之王

  4 盘位、4K 输出、J3455、遥控,NAS 硬件入门性价比之王 开篇 在 NAS 市场中,威...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

仅2MB大小!开源硬件监控工具:Win11 无缝适配,CPU、GPU、网速全维度掌控

还在忍受动辄数百兆的“全家桶”监控软件?后台偷占资源、界面杂乱冗余,想查个 CPU 温度都要层层点选? 今天给...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...
12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换,告别多工具切换

12.2K Star 爆火!开源免费的 FileConverter:右键一键搞定音视频 / 图片 / 文档转换...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...