博文目录
1、Httpd服务的访问控制
一、客户机地址限制
二、用户受权限制
2、构建虚拟Web主机
3、配置基于域名的虚拟主机
4、配置基于IP地址的虚拟主机
5、配置基于端口号的虚拟主机html
为了更好地控制对网站资源的访问。能够为特定的网站目录添加访问受权。主要分为客户机地址限制和用户受权限制,这两种访问控制方式都应用于httpd.conf配置文件中的目录区域范围内。web
经过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,按回车键查找到相应的位置):apache
<Directory "/usr/local/httpd/htdocs"> ................ <!--省略部份内容--> Require ip 192.168.100.101 <!--仅容许192.168.100.101的主机访问网站服务--> </Directory>
配置完成重启服务,192.168.100.101的客户端就能够访问了。vim
反之,须要使用“仅拒绝”的限制策略时,灵活使用Require与Require not配置语句设置拒绝策略,只禁止一部分主机访问。在使用not禁止访问时要将其置于<RequireALL></RequireALL>容器中,并在容器中指定相应的限制策略。
具体配置以下:centos
<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>
基于用户的访问控制包含认证和受权两个过程,是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 <!--提示添加成功-->
查看用户是否添加:ide
[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主机服务能够充分利用服务器的硬件资源,从而大大下降网站构建及运行成本。使用httpd能够很是方便地构建虚拟主机服务器,只须要运行一个httpd服务就可以同时支撑大量的Web站点。httpd支持的虚拟主机类型包括一下三种:
- 基于域名:为每一个虚拟主机使用不一样的域名,可是其对应的IP地址是相同的。这是使用最为广泛的虚拟Web主机类型。
基于域名:为每一个虚拟主机使用不一样的域名,可是其对应的IP地址是相同的。这是使用最为广泛的虚拟Web主机类型。- 基于IP地址:为每一个虚拟主机使用不一样的域名,且各自对应的IP地址也 不相同。这种方式须要为服务器配备多个网络接口,所以应用并非很是普遍。
- 基于端口:为每一个虚拟主机使用不一样的域名,IP地址来区分不一样的站点内容,而是使用了不一样的TCP端口号,所以用户在浏览不一样的虚拟站点时须要同时指定端口号才能访问。
DNS自行搭建,若是有不明白的能够参考博文:CentOS7简单搭建DNS服务
下面不在进行详细的解释。
[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
[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服务-->
为每一个虚拟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
[root@centos01 ~]# vi /usr/local/httpd/conf/httpd.conf <!--编辑主配置文件--> 390 # Virtual hosts 391 Include conf/extra/httpd-vhosts.conf <!--删除该行前面的#号-->
[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>
[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服务-->
一、复制一个新的网卡
[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 <!--重启网卡服务-->
[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服务-->
[root@centos01 ~]# vi /usr/local/httpd/conf/httpd.conf <!-编辑主配置文件--> 40 Listen 80 41 Listen 8080 <!--添加8080端口号-->
[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服务-->
—————— 本文至此结束,感谢阅读 ——————