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
二、搭建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 #查看用戶數據文件
[root@Init5 ~]# id tom
3、重啟服務
[root@Init5 ~]# /etc/init.d/httpd restart
4、測試訪問
四、基於虛擬目錄驗證用戶訪問授權
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實現創建虛擬目錄以及用戶訪問控制(內附源碼包)