1. 程式人生 > >lamp(五)——使用者認證、域名跳轉、訪問日誌

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