APache网站服务配置访问控制和构建虚拟主机

博文目录
一、Httpd服务的访问控制
1、客户机地址限制
2、用户授权限制
二、构建虚拟Web主机
三、配置基于域名的虚拟主机
四、配置基于IP地址的虚拟主机
五、配置基于端口号的虚拟主机

一、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)创建用户认证数据文件

[[email protected] ~]# /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        <!--提示添加成功-->

查看用户是否添加:

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

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

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

3)重启apache服务
[[email protected] ~]# 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、为虚拟主机提供域名解析

[[email protected] ~]# 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";
};
[[email protected] ~]# 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
[[email protected] ~]# cp /var/named/bdqn.com.zone /var/named/benet.com.zone
[[email protected] ~]# 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、编辑网卡

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

3、客户端解析域名

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

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

[[email protected] ~]# mkdir -p /var/www/
[[email protected] ~]# mkdir -p /var/www/bdqn.com
[[email protected] ~]# mkdir -p /var/www/benet.com
[[email protected] ~]# echo "www.bdqn.com" > /var/www/bdqn.com/index.html
[[email protected] ~]# echo "www.benet.com" > /var/www/benet.com/index.html

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

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

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

[[email protected] ~]# 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、配置基于域名的虚拟主机

[[email protected] ~]# 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>
[[email protected] ~]# systemctl restart httpd  <!--重启httpd服务-->

8、客户端访问验证

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

1、复制一个新的网卡

[[email protected] ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-ens32:1
[[email protected] 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-->
[[email protected] ~]# systemctl restart network           <!--重启网卡服务-->

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

[[email protected] ~]# 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>
[[email protected] ~]# systemctl restart httpd           <!--重启Httpd服务-->

3、客户端访问验证

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

1、修改Apache主配置文件

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

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

[[email protected] ~]# 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>
[[email protected] ~]# systemctl restart httpd  <!--重启httpd服务-->

3、客户端访问验证

—————— 本文至此结束,感谢阅读 ——————

原文地址:https://blog.51cto.com/14156658/2445763

时间: 2024-10-28 10:17:34

APache网站服务配置访问控制和构建虚拟主机的相关文章

部署Apache网站服务以及访问控制的实现

WebServer常用的有Apache.IIS.nginx.Tomcat Apache HTTP服务器是一个模块化的服务器,可以运行在几乎所有广泛使用的计算机平台上.其属于应用服务器.Apache支持支持模块多,性能稳定,Apache本身是静态解析,适合静态HTML.图片等,但可以通过扩展脚本.模块等支持动态页面等. IIS是一种web服务组件,其中包括Web服务器.FTP服务器.NNTP服务器和SMTP服务器,分别用于网页浏览.文件传输.新闻服务和邮件发送等方面,它使得在网络上发送信息成为一件

基于Linux搭建Apache网站服务配置详解

Apache作为一款开源软件,是广泛应用的web应用之一,Apache有两个主要版本1.X和2.X,一般我们使用2.X版本,比起1.X版本它支持很多新的功能,下载Apache源码包的地址为:https://httpd.apache.org ,下载到源码包后开始准备安装: 1.为避免发生端口冲突,程序冲突等问题,如果有rpm方式安装的httpd服务,建议将其卸载. 2.挂载系统镜像,切换至系统盘中的Packages目录,安装相关依赖包(注意,最好一个一个的依次安装,因为如果有些安装包已经安装了,一

Apache网站服务基础

Apache网站服务基础 一.安装httpd服务器 1.      为了避免端口冲突,程序冲突,建议先卸载使用RPM方式安装的httpd rpm  -q | grep httpd rpm  -e httpd  --nodeps 2.      源码编译及安装 a)        解包 tar zxfhttpd-2.2.17.tar   -C /root cd  ~ b)        配置 根据服务器实际的应用需求,可以灵活设置不同的定制选项 各选项的含义: --prefix:指定将httpd服

Ngingx常用配置(二)虚拟主机,访问控制,认证和状态信息

环境概况: IP地址 服务器状态 简述 192.168.180.4 Nginx服务器 192.168.180.23 client 192.168.171.231 client 具体测试步骤如下: (一)基于虚拟主机的配置.是通过不同的域名来区分提供的web服务器的主机,server_name指令主要用于配置基于域名的虚拟主机 1,首先在192.168.180.23修改/etc/hosts文件 [[email protected] haproxy]# vim /etc/hosts 192.168.

Apache配置基于IP的虚拟主机 Apache virtual host configuration is based on the IP

Step 1: 检查是否开启 httpd-vhosts.conf apache/conf/httpd.conf文件 # Virtual hosts Include conf/extra/httpd-vhosts.conf 如果没有开启,必须在httpd.conf文件中设置:如果开启,则可以在apache/conf/extra/httpd-vhosts.conf文件中设置,当然也还是可以再httpd.conf文件中进行设置,同样有效. Step 2: httpd.conf文件 DocumentRo

?搭建LAMP环境及快速部署双网站并实现基于域名的虚拟主机

本节所讲内容: 实战:搭建LAMP环境及快速部署双网站并实现基于域名的虚拟主机 LAMP架构:??? Linux+Apache+Mysql+PHP Linux+Apache+Mysql/MariaDB+Perl/PHP/Python一组常用来搭建动态网站或者服务器的开源软件,共同组成了一个强大的Web应用程序平台. 一.安装需要的软件包 [[email protected] ~]# yum install httpd mysql-server mysql php php-mysql  -y ht

基于域名构建虚拟主机

构建虚拟主机 虚拟Web主机: 1.在同一-台物理服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机 httpd支持的虚拟主机类型: 1.基于域名的虚拟主机(企业常用)2.基于IP地址的虚拟主机3.基于端口的虚拟主机 大型公司实例项目:两台物理主机(A/B)两台主机中分别有两个虚拟站点主机A和B中都有accp网站和kgc网站网站内容完全相同,对外提供业务时,既用到了合理分配,也起到了双机热备学习一台主机架构两个网站 构建虚拟主机一 基于域名 应用示例: 1.构建2个虚拟Web

linux构建虚拟主机

概念 虚拟web主机 在同一台物理服务器中运行多个web站点,其中每一个站点并不独立占用一台真正的计算机. httpd支持的三种虚拟主机类型 基于域名的虚拟主机基于IP地址的虚拟主机基于端口的虚拟主机 基于域名构建虚拟主机 安装dns和http服务 更改dns配置文件 在测试机上添加dns服务器地址192.168.149.129 开启服务,关闭防火墙,测试是否能解析成功 在httpd服务的配置文件中添加一个子配置文件目录extra,并在目录内添加虚拟主机配置文件 创建站点 将主配置文件申明子配置

CentOS 7中构建虚拟主机(实验篇)

虛拟Web主机 在同一台物理服务器中运行多个Web站点,其中每一个站点并不独立占用一台真正的计算机 httpd支持的虚拟主机类型 基于域名的虚拟主机 基于IP地址的虚拟主机 基于端口的虚拟主机 搭建实验 基于域名的虚拟主机 [[email protected] ~]# yum install bind httpd -y //在服务器上安装DNS与HTTP服务 [[email protected] ~]# cd /etc/ //进入etc目录 [[email protected] etc]# vi