Apache用戶認證
打開網站直接彈出輸入用戶名密碼,正確了之後才能查看網站,這個叫Apache用戶認證。
編輯配置文件(因爲我們使用的是apache虛擬主機,所以進入虛擬主機的配置)vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
在配置文件裏添加如下段<Directory /data/wwwroot/yy.com>
//指定認證的目錄AllowOverride AuthConfig
//這個相當於打開認證的開關AuthName "yy.com user auth"
//自定義認證的名字,作用不大AuthType Basic
//認證的類型,一般爲Basic,AuthUserFile /data/.htpasswd
//指定密碼文件所在位置require valid-user
//指定需要認證的用戶爲全部可用用戶</Directory>
創建密碼文件以及用戶和密碼
使用工具htpassswd進行創建,-c爲創建,-m爲MD5加密,創建一個kjj用戶/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd kjj
New password: 輸入密碼
Re-type new password: 確認密碼
Adding password for user kjj 提示增加成功
查看已經創建密碼文件(密碼是加密的)cat /data/.htpasswd
更改完成後不要忘記檢查配置文件是否正確以及重新加載配置文件/usr/local/apache2.4/bin/apachectl -t
檢查文件是否正確
/usr/local/apache2.4/bin/apachectl graceful
重新加載配置文件
我們使用瀏覽器進行驗證
使用curl進行測試密碼是否成功設置,-I只顯示請求頭信息,-u設置服務器的用戶和密碼
-u指定用戶和密碼,輸入用戶kjj,密碼147258,提示200,表示正常訪問
curl -x192.168.71.131:80 -ukjj:147258 111.com -I
針對單個的文件進行用戶認證
有時候我們還會有一個只對單個文件進行認證。和前面的操作幾乎一樣,但是唯一不同的就會如下標出的位置。
編輯配置文件vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
hmy.php是需要認證的文件
<FilesMatch hmy.php>
AllowOverride AuthConfig
AuthName "yy.com user auth"
AuthType Basic
AuthUserFile /data/.htpasswd
require valid-user
</FilesMatch>
在指定的目錄下新建一個hmy.php進行測試vim /data/wwwroot/yy.com/hmy.php
添加如下內容
<?php
echo "I LOVE YOU.php"; 內容隨便寫,測試而已
更改完成後記得檢查配置文件是否正確以及重新加載配置文件(養成好習慣)/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl graceful
我們訪問一下指定文件hmy.php
域名跳轉
編輯虛擬主機配置文件vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
在配置文件裏添加以下內容
<VirtualHost :80>
DocumentRoot "/data/wwwroot/yy.com"
ServerName kjj.com
ServerAlias www.kjj.com www.hmy.com
<IfModule mod_rewrite.c> #需要mod_rewrite模塊支持
RewriteEngine on #打開rewrite功能
RewriteCond %{HTTP_HOST} !^kjj.com$ #定義rewrite的條件,主機名(域名)不是kjj.com 的滿足條件
RewriteRule ^/(.)$ http://kjj.com/$1 [R=301,L] #定義rewrite規則,當滿足上面的條件時,這條規則纔會執行,跳轉至kjj.com,301表示永久跳轉
</IfModule>
ErrorLog "logs/yy.com-error_log"
CustomLog "logs/yy.com-access_log" common
</VirtualHost>
更改完成後記得檢查配置文件是否正確以及是否加載rewrite模塊,重新加載apache/usr/local/apache2.4/bin/apachectl -t
/usr/local/apache2.4/bin/apachectl -M |grep rewrite
/usr/local/apache2.4/bin/apachectl graceful
如果沒有加載rewrite模塊,那麼需要在配置文件里加載vim /usr/local/apache2.4/conf/httpd.conf
打開配置文件後搜索關鍵字:rewrite 找到 LoadModule rewrite_module modules/mod_rewrite.so 將這一行前面的#號去掉即可。
使用curl進行測試curl -x192.168.71.131:80 www.hmy.com -I
#訪問www.hmy.com
301表示永久跳轉成功,Location: http://kjj.com/ 表示跳轉kjj.com成功
狀態403就是 vim /usr/local/apache2.4/conf/httpd.conf 裏的 Require all denied 沒有改成 Require all granted
Apache訪問日誌
訪問日誌記錄用戶的每一個請求
Apache日誌的存放地址(apache默認日誌存放目錄)ls /usr/local/apache2.4/logs/
access_log爲訪問日誌,記錄所有對apache服務器進行請求的訪問,它的位置和內容由CustomLog指令控制,LogFormat指令可以用來簡化該日誌的內容和格式
error_log爲錯誤日誌,記錄下任何錯誤的處理請求,它的位置和內容由ErrorLog指令控制,通常服務器出現什麼錯誤,首先對它進行查閱,是一個最重要的日誌文件
日誌的格式
編輯Apache的主配置文件vim /usr/local/apache2.4/conf/httpd.conf
打開配置文件後搜索關鍵字:LogFormat ,找到如下兩行:
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
第一行內容的意思
h:來源ip
l:用戶
u:用戶名密碼
t:時間
r:行爲網址
s:狀態碼
b:大小
第二行多了兩個其他選項。
refere:瀏覽器訪問這個網頁前的網址
user-agent:用戶代理,用戶通過什麼東西訪問,比如瀏覽器,curl命令訪問
更改日誌的格式
編輯配置文件
vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
打開配置文件後,搜索找到CustomLog,將後面的common更改爲combined
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/aaa.com"
ServerName aaa.com
ServerAlias www.aaa.comwww.123.com
ErrorLog "logs/aaa.com-error_log"
CustomLog "logs/aaa.com-access_log" common #將這裏的common更改爲combined即可
</VirtualHost>