通常狀況咱們訪問網站的時候並不須要用戶認證,可是當網站上某些網頁只想提供給指定的用戶訪問時,能夠經過用戶認證來實現。 下面這個示例是在虛擬主機配置文件中作的,#用戶認證下面的是配置的內容php
<VirtualHost *:80> DocumentRoot "/tmp/ccc.com" ServerName ccc.com ServerAlias www.ccc.com #用戶認證 <Directory /tmp/ccc.com> 指定要認證的目錄 AllowOverride AuthConfig 至關於打開認證的開關 AuthName "ccc.com user auth" 自定義認證名,意義不大 AuthType Basic 通常設定爲basic就行 AuthUserfile /data/.htpasswd 指定密碼文件所在位置 require valid-user 指定須要認證的用戶爲所有可用用戶 </Directory> ErrorLog "ccc.com_log" CustomLog "ccc.com_log" common </VirtualHost>
/usr/local/apache/bin/apachectl -t
/usr/local/apache/bin/apachectl graceful
/usr/local/apache/bin/htpasswd -c -m /data/.htpasswd hello
其中-c是建立密碼文件,-m是指定加密方式,hello是用戶名。再次添加用戶就不用-c選項了。cat /data/.htpasswd
htpasswd命令是Apache的Web服務器內置工具,用於建立和更新儲存用戶名、域和用戶基本認證的密碼文件。html
參數:算法
c:=create,建立一個加密文件apache
n:不更新加密文件,只將更新後的用戶名密碼顯示在屏幕上vim
m:使用MD5算法對密碼進行加密(默認)瀏覽器
d:使用CRYPT算法對密碼進行加密服務器
p:不對密碼進行加密,即明文密碼curl
s:使用SHA算法對密碼進行加密ide
b:在命令行一併輸入用戶名和密碼,而不是根據提示輸入密碼工具
D:刪除指定用戶
編輯httpd配置文件/usr/local/apache2.4/conf/httpd.conf
<VirtualHost *:80> DocumentRoot "/tmp/abc.com" ServerName abc.com <FilesMatch kkk.php> 須要認證的文件,該文件須要在 DocumentRoot指定的目錄下 AllowOverride AuthConfig AuthName "abc.com user auth" AuthType Basic AuthUserfile /data/.htpasswd require valid-user </FilesMatch> ErrorLog "abc.com_log" CustomLog "abc.com_log" common </VirtualHost>
<VirtualHost *:80> DocumentRoot "/tmp/abc.com" ServerName www.abc.com ServerAlias abc.com # 域名跳轉 <IfModule mod_rewrite.c> # 須要mod_rewrite模塊的支持 RewriteEngine on #打開rewrite功能 RewriteCond %{HTTP_HOST} !^www.abc.com$ #定義rewrite的條件,意思是域名不是www.abc.com的知足條件 RewriteRule ^/(.*)$ http://www.abc.com/$1 [R=301,L] #RewriteRule^/.(.*)$http://www.abc.com/$1 [R=301,L] #定義rewrite規則,當知足上面條件時,這條規則才生效 </IfModule> ErrorLog "abc.com_log" CustomLog "abc.com_log" common
[root@localhost ~]# curl -x127.0.0.1:80 -l 456.com <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN"> <html><head> <title>301 Moved Permanently</title> </head><body> <h1>Moved Permanently</h1> <p>The document has moved <a href="http://www.abc.com/">here</a>.</p> </body></html>
每一次訪問請求都會記錄在日誌中 Apache的訪問日誌的路徑在Apache的安裝路徑下面/usr/local/apache/logs/下
access_log 訪問日誌,access_log爲訪問日誌,記錄全部對apache服務器進行請求的訪問,它的位置和內容由CustomLog指令控制,LogFormat指令能夠用來簡化該日誌的內容和格式
error_log 錯誤日誌 error_log爲錯誤日誌,記錄下任何錯誤的處理請求,它的位置和內容由ErrorLog指令控制,一般服務器出現什麼錯誤,首先對它進行查閱,是一個最重要的日誌文件。
系統自帶兩種日誌格式:combine和common,默認使用common模式。 LogFormat "%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined LogFormat "%h %l %u %t "%r" %>s %b" common
h表示host來源IP
l表示login用戶
u表示user用戶名密碼
t表示time時間,
r表示request行爲(curl時,加I爲head,不加Iget)
s表示status狀態碼,b表示byte大小
user-agent:用戶代理(使用什麼方式訪問,瀏覽器或者curl命令或者其它)
referer:跳轉到當前位置的上一個網址(即:提供當前IP的網站)