lamp(五)——使用者認證、域名跳轉、訪問日誌
11.18 Apache使用者認證
11.19/11.20 域名跳轉
11.21 Apache訪問日誌
Apache使用者認證
apache使用者認證設定後,訪問網頁前要進行身份認證才能進入,比如一些後臺管理頁面等。
在虛擬主機配置檔案中設定。vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf
,把123.com那個虛擬主機編輯成如下內容
<VirtualHost *:80> DocumentRoot "/data/wwwroot/www.123.com" ServerName www.123.com <Directory /data/wwwroot/www.123.com> #指定認證的目錄 AllowOverride AuthConfig #這個相當於開啟認證的開關 AuthName "123.com user auth" #自定義認證的名字,作用不大 AuthType Basic #認證的型別,一般為Basic,其他型別阿銘沒用過 AuthUserFile /data/.htpasswd #指定密碼檔案所在位置,指定了可以訪問的使用者和密碼 require valid-user #指定需要認證的使用者為全部可用使用者 </Directory> </VirtualHost>
使用apache自帶的工具生成密碼,命令是/usr/local/apache2.4/bin/htpasswd -cm /data/.htpasswd user1
。引數c指生成,m指md5加密方式。
重新載入配置:apachectl -t測試無誤,然後apachectl graceful。測試可以用瀏覽器和curl。在第三方機器瀏覽器測試需要繫結hosts,不然dns、hosts中都沒有解析。
curl -x127.0.0.1:80 www.123.com //狀態碼為401
curl -x127.0.0.1:80 -uuser1:passwd www.123.com //狀態碼為200
上面是對一個目錄進行認證訪問,還可以針對單個檔案進行認證。
<VirtualHost *:80> DocumentRoot "/data/wwwroot/www.123.com" ServerName www.123.com <FilesMatch admin.php> AllowOverride AuthConfig AuthName "123.com user auth" AuthType Basic AuthUserFile /data/.htpasswd require valid-user </FilesMatch> </VirtualHost>
域名跳轉
虛擬主機可以配置servername和serveralias,也就是可以有多個域名。為了排名競爭(seo),網站要儘量一個域名作為主域名,例如把123.com域名跳轉到www.123.com。配置如下:
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias 123.com
<IfModule mod_rewrite.c> //需要mod_rewrite模組支援
RewriteEngine on //開啟rewrite功能
RewriteCond %{HTTP_HOST} !^www.123.com$ //定義rewrite的條件,主機名(域名)不是www.123.com滿足條件
RewriteRule ^/(.*)$ http://www.123.com/$1 [R=301,L] //定義rewrite規則,當滿足上面的條件時,這條規則才會執行。$1指括號內的整體。匹配可以省略域名主體。
</IfModule>
</VirtualHost>
由於上面配置中用到了rewrite模組,所以在重新載入配置檔案前要檢視該模組是否載入:/usr/local/apache2/bin/apachectl -M|grep -i rewrite
//若無該模組,需要編輯配置檔案httpd.conf,刪除rewrite_module (shared) 前面的#。
修改完apache配置記得重新載入配置檔案。然後curl -x127.0.0.1:80 -I 123.com
測試,返回狀態碼為301,表示跳轉成功。
Apache訪問日誌
apache配置檔案中日誌有錯誤日誌和訪問日誌,記錄相關資訊,是運維的重要工具。訪問日誌記錄使用者的每一個請求。
在apache配置檔案可以檢視修改日誌記錄的格式,vim /usr/local/apache2.4/conf/httpd.conf
,搜尋LogFormat就可以看到有combined和common兩種格式。combined更詳細一些,會多記錄referer、user-agent等資訊。
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
由於開啟了虛擬主機,所以直接修改虛擬主機配置檔案:
<VirtualHost *:80>
DocumentRoot "/data/wwwroot/www.123.com"
ServerName www.123.com
ServerAlias 123.com
CustomLog "logs/123.com-access_log" combined
</VirtualHost>
重新載入配置檔案。curl -x127.0.0.1:80 -I 123.com
增加訪問記錄。然後檢視訪問日誌:tail /usr/local/apache2.4/logs/123.com-access_log