LAMP架構(Apache用戶認證、域名跳轉、Apache訪問日誌)

Apache用戶認證

  • 修改虛擬主機配置文件

此處教程咱們編輯/usr/local/apache2.4/conf/extra/httpd-vhosts.conf修改上節配置的111.com的虛擬機配置爲如下內容:php

<Directory /data/wwwroot/www.111.com> //指定認證的目錄
        AllowOverride AuthConfig //這個至關於打開認證的開關
        AuthName "111.com user auth" //自定義認證的名字,做用不大
        AuthType Basic //認證的類型,通常爲Basic,其餘類型阿銘沒用過
        AuthUserFile /data/.htpasswd  //指定密碼文件所在位置
        require valid-user //指定須要認證的用戶爲所有可用用戶
    </Directory>

  • 建立用戶並生成密碼
/usr/local/apache2.4/bin/htpasswd -c -m /data/.htpasswd   用戶名

此處密碼咱們設定爲:12345678 用戶爲 yolksapache

  • 從新加載配置文件
/usr/local/apache2.4/bin/apachectl -t

/usr/local/apache2.4/bin/apachectl  graceful
  • 從新測試提示401,表示須要用戶驗證
curl -x127.0.0.1:80  111.com

直接命令行測試vim

curl -x127.0.0.1:80 -uyolks:12345678 111.com -I

返回狀態碼200說明請求正常瀏覽器

還能夠針對訪問的頁面進行認證

  • 例如管理員登錄用到admin.php,則能夠對此文件進行認證方可訪問:

須要在/usr/local/apache2.4/conf/extra/httpd-vhosts.conf配置文件中111.com添加以下配置表示對admin.php文件作限制:curl

<FilesMatch admin.php>
        AllowOverride AuthConfig
        AuthName "111.com user auth"
        AuthType Basic
        AuthUserFile /data/.htpasswd //指定密碼文件所在位置
        require valid-user
</FilesMatch>

  • 編輯須要驗證的文件
vim  /data/wwwroot/111.com/admin.php


<?php
echo "this is admin.php test page!";
?>
  • 正常訪問,不輸入密碼測試,提示無權限401
curl -x127.0.0.1:80   111.com/admin.php -I

  • 輸入密碼請求測試
curl -x127.0.0.1:80 -uyolks:12345678  111.com/admin.php

返回數據正常200ide

域名跳轉

  • 編輯虛擬機配置

對應文件仍是虛擬主機配置文件/usr/local/apache2.4/conf/httpd.conf中添加以下配置:測試

<IfModule mod_rewrite.c> //須要mod_rewrite模塊支持
        RewriteEngine on  //打開rewrite功能
        RewriteCond %{HTTP_HOST} !^.111.com$  //定義rewrite的條件,主機名(域名)不是111.com時知足條件跳轉到111.com來
        RewriteRule ^/(.*)$ http://111.com/$1 [R=301,L(L表示last只跳轉1次)] //定義rewrite規則,當知足上面的條件時,這條規則纔會執行
</IfModule>

以下圖所示:網站

  • 檢查配置文件是否有誤
/usr/local/apache2.4/bin/apachectl  -t
  • 從新加載配置文件
/usr/local/apache2.4/bin/apachectl  graceful
  • 檢查rewrite模塊是否加載
/usr/local/apache2.4/bin/apachectl   -M
  • 沒有加載則須要編輯apache配置文件,取消rewrite模塊的註釋
vi   /usr/local/apache2.4/conf/httpd.conf

  • 檢查配置文件是否有誤
/usr/local/apache2.4/bin/apachectl  -t
  • 從新加載配置文件
/usr/local/apache2.4/bin/apachectl  graceful
  • 測試
curl -x127.0.0.1:80 www.example.com -I

Apache訪問日誌

默認apache 配置的日誌文件ui

路徑: /usr/local/apache2.4/logs/111.com-access_logthis

查看111.com虛擬主機用戶訪問請求日誌

此日誌文件輸出的內容含義參考主配置文件 /usr/local/apache2.4/conf/httpd.conf

默認顯示規則

LogFormat "%h %l %u %t \"%r\" %>s %b" common
  • 參數含義解釋
    • %h : 訪問來源ip
    • %l : 用戶
    • %u : 用戶
    • %t : 時間
    • %r : request行爲,包括方式和網址
    • s : 狀態碼
    • %b : 大小
  • 主配置文件還有一種顯示規則
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
  • 比起默認的參數還多了兩個
    • %{Referer} : 簡單理解就是訪問某個網站目錄以後,進入以前的瀏覽器連接就是當前連接的referer
    • %{User-Agent} : 用戶代理,curl和單獨的瀏覽器分別表明不一樣的user-agent,瀏覽器訪問即瀏覽器爲用戶代理,curl訪問也是用戶代理;

在虛擬主機配置文件配置訪問日誌

  • 將 common參數修改成 combined

此處新訪問多顯示內容即爲新格式format生效的格式

拓展

apache虛擬主機開啓php的短標籤 http://ask.apelearn.com/question/5370

相關文章
相關標籤/搜索