Apach实现创建虚拟目录以及用户访问控制(内附源码包)

简介

基于用户的访问控制就是对网页目录进行认证配置,用户输入用户名密码之后才能访问网页

认证方式

httpd服务器支持使用摘要认证(Digest)和基本认证(Basic)两种方式
Digest:使用摘要认证需要在编译httpd之前添加"--enable-auth-digest"选项,但并不是所有的浏览器都支持摘要认证;
Basic:基本认证是htpd服务的基本功能,不需要预先配置特别的选项(安全性没有摘要认证高,支持所有的浏览器)

认证与授权

基于用户的访问控制包含认证(Authentication)和授权(Authorization)两个过程。认证是指识别用户身份的过程,授权是指允许特定用户访问特定目录区域的过程,特定目录区域是Apache指定的目录区域指定的网页放置的父目录

实验环境

  • 系统环境:centos6.5
  • 服务器IP地址:192.168.100.103
  • 客户端IP地址:192.168.100.99
  • yum挂载目录:/mnt/sr0
  • 相关源码包下载地址:百度云下载  密码:pko3

搭建步骤

一、准备工作

1、关闭防火墙及selinux

[root@Init5 ~]# chkconfig iptables off #随开机关闭iptables
[root@Init5 ~]# vim /etc/sysconfig/selinux
Apach实现创建虚拟目录以及用户访问控制(内附源码包)

二、搭建httpd、DNS服务器

如果没有搭建以上两个服务的朋友,请查看我的其他帖子有详细介绍
http://blog.51cto.com/11905606/2156944

三、基于根目录验证用户访问授权

1、修改主配置文件

[root@Init5 ~]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak #修改之前先备份
[root@Init5 ~]# vim /etc/httpd/conf/httpd.conf

#查看、添加、修改以下参数
<Directory "/usr/local/httpd/htdocs"> #站点目录
Options Indexes FollowSymLinks #软链接
AllowOverride None #改成其他值,会产生一个.htpasswod的隐藏文件,放在网站发布的目录下,可以写一些网站的属性配置,如果与全局配置冲突了,以.htpasswod为准,最好不要动
order allow,deny
Allow from all #默认允许所有人进行访问
AuthName "Auth Direcrory" #指定认证领域名称,登录的时候会通过登录窗口显示
AuthType Basic #指定认证方式
AuthUserFile /usr/local/httpd/conf/.awspwd #指定授权用户数据文件
require valid-user #授权给合法用户,合法用户在.awspwd文件中
</Directory>

2、创建授权用户

[root@Init5 ~]# cd /usr/local/httpd/conf/
[root@Init5 conf]# htpasswd -c /usr/local/httpd/conf/.awspwd tom

htpasswd在最开始编译安装的时候已经安装好htpasswd,用来创建授权用户数据文件,并维护其中的用户账号
-c 指定用户数据文件的位置,添加“-c”选项表示新建立此文件,省略“-c”选项,则表示指定的用户数据文件已经存在,用于添加新的用户或修改现有用户的密码

[root@Init5 conf]# cat /usr/local/httpd/conf/.awspwd #查看用户数据文件
Apach实现创建虚拟目录以及用户访问控制(内附源码包)

[root@Init5 ~]# id tom
Apach实现创建虚拟目录以及用户访问控制(内附源码包)

3、重启服务

[root@Init5 ~]# /etc/init.d/httpd restart

4、测试访问

Apach实现创建虚拟目录以及用户访问控制(内附源码包)
Apach实现创建虚拟目录以及用户访问控制(内附源码包)

四、基于虚拟目录验证用户访问授权

1、修改主配置文件

[root@Init5 ~]# mv /etc/httpd/conf/httpd.conf.bak /etc/httpd/conf/httpd.conf #还原之前备份的配置文件

Include conf/extra/httpd-vhosts.conf #打开此行注释,涵盖了虚拟主机的配置,并且可以看出在conf目录下有虚拟主机配置文件

2、修改虚拟主机配置文件

[root@Init5 ~]# vim /etc/httpd/conf/extra/httpd-vhosts.conf

设置目录别名:

Alias /pub "/var/www/html"

站点1设置:

<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
order allow,deny
Allow from all
AuthName "Auth Direcrory"
AuthType Basic
AuthUserFile /usr/local/httpd/conf/.awspwd
require valid-user
</Directory>

站点2设置:

<VirtualHost 192.168.100.103:80>
ServerAdmin [email protected]
DocumentRoot "/var/www/html"
ServerName www.bt.com
ServerAlias www.bt.com
ErrorLog "logs/www.bt.com-error_log"
CustomLog "logs/www.bt.com-access_log" common
</VirtualHost>

3、创建网页根目录及网页

[root@Init5 ~]# mkdir -p /var/www/html
[root@Init5 ~]# echo "<h1>Hello World</h1>" > /var/www/html/index.html

4、重启服务

[root@Init5 ~]# /etc/init.d/httpd restart

5、再次访问

Apach实现创建虚拟目录以及用户访问控制(内附源码包)

Apach实现创建虚拟目录以及用户访问控制(内附源码包)

猜你喜欢

转载自blog.51cto.com/11905606/2158169